Docker基础入门

news/2024/11/30 20:38:39/

docker基础教程:

第一章:docker与虚拟机的区别

docker与虚拟机的主要区别在于docker是一个在你本机操作系统中独立运行的一个进程,而虚拟机则是一个完整的隔离的操作系统,它运行在你本机操作系统之上,需要更多时间和资源来加载,所以docker容器化比虚拟机有更大优势。但是docker并不是虚拟机的替代品,而是为了解决特定的问题。

例如:

1、加载速度与虚拟机不同,所需硬件资源很少。

2、在同一操作系统上可以同时运行多个docker容器。

3、可以对容器进行修改并部署。

第二章:docker的安装

在开始docker之前要确保已安装好docker

第一步:安装工具包

$ yum install -y yum-utils #安装工具包,缺少这些依赖将无法完成

执行结果:

Loaded plugins: fastestmirror, langpacks
base                                                                                          | 3.6 kB  00:00:00
epel                                                                                          | 4.3 kB  00:00:00
extras                                                                                        | 3.4 kB  00:00:00
update                                                                                        | 3.4 kB  00:00:00
(1/3): epel/7/x86_64/updateinfo                                                               | 797 kB  00:00:00
(2/3): epel/7/x86_64/primary_db                                                               | 4.7 MB  00:00:00
(3/3): update/7/x86_64/primary_db                                                             | 4.8 MB  00:00:00
Loading mirror speeds from cached hostfile
Package yum-utils-1.1.31-40.el7.noarch already installed and latest version
Nothing to do

第二步:设置远程仓库

$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

执行结果:

Loaded plugins: fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

第三步:安装

yum install docker-ce

执行结果:

Loaded plugins: fastestmirror, langpacks
docker-ce-stable                                                                              | 2.9 kB  00:00:00
docker-ce-stable/x86_64/primary_db                                                            | 4.8 kB  00:00:00
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package docker-ce.x86_64 0:17.03.1.ce-1.el7.centos will be installed
--> Processing Dependency: docker-ce-selinux >= 17.03.1.ce-1.el7.centos for package: docker-ce-17.03.1.ce-1.el7.centos.x86_64
--> Processing Dependency: libcgroup for package: docker-ce-17.03.1.ce-1.el7.centos.x86_64
--> Processing Dependency: libseccomp.so.2()(64bit) for package: docker-ce-17.03.1.ce-1.el7.centos.x86_64
--> Running transaction check
---> Package docker-ce-selinux.noarch 0:17.03.1.ce-1.el7.centos will be installed
--> Processing Dependency: policycoreutils-python for package: docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch
---> Package libcgroup.x86_64 0:0.41-11.el7 will be installed
---> Package libseccomp.x86_64 0:2.3.1-2.el7 will be installed
--> Running transaction check
---> Package policycoreutils-python.x86_64 0:2.5-11.el7_3 will be installed
--> Processing Dependency: setools-libs >= 3.3.8-1 for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: libsemanage-python >= 2.5-5 for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: audit-libs-python >= 2.1.3-4 for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: python-IPy for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: libqpol.so.1(VERS_1.4)(64bit) for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: libqpol.so.1(VERS_1.2)(64bit) for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: libapol.so.4(VERS_4.0)(64bit) for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: checkpolicy for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: libqpol.so.1()(64bit) for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Processing Dependency: libapol.so.4()(64bit) for package: policycoreutils-python-2.5-11.el7_3.x86_64
--> Running transaction check
---> Package audit-libs-python.x86_64 0:2.6.5-3.el7_3.1 will be installed
---> Package checkpolicy.x86_64 0:2.5-4.el7 will be installed
---> Package libsemanage-python.x86_64 0:2.5-5.1.el7_3 will be installed
---> Package python-IPy.noarch 0:0.75-6.el7 will be installed
---> Package setools-libs.x86_64 0:3.3.8-1.1.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved=====================================================================================================================Package                         Arch            Version                             Repository                 Size
=====================================================================================================================
Installing:docker-ce                       x86_64          17.03.1.ce-1.el7.centos             docker-ce-stable           19 M
Installing for dependencies:audit-libs-python               x86_64          2.6.5-3.el7_3.1                     update                     70 kcheckpolicy                     x86_64          2.5-4.el7                           base                      290 kdocker-ce-selinux               noarch          17.03.1.ce-1.el7.centos             docker-ce-stable           28 klibcgroup                       x86_64          0.41-11.el7                         base                       65 klibseccomp                      x86_64          2.3.1-2.el7                         base                       56 klibsemanage-python              x86_64          2.5-5.1.el7_3                       update                    104 kpolicycoreutils-python          x86_64          2.5-11.el7_3                        update                    445 kpython-IPy                      noarch          0.75-6.el7                          base                       32 ksetools-libs                    x86_64          3.3.8-1.1.el7                       base                      612 kTransaction Summary
=====================================================================================================================
Install  1 Package (+9 Dependent packages)Total download size: 20 M
Installed size: 24 M
Is this ok [y/d/N]: y
Downloading packages:
(1/10): audit-libs-python-2.6.5-3.el7_3.1.x86_64.rpm                                          |  70 kB  00:00:00
(2/10): checkpolicy-2.5-4.el7.x86_64.rpm                                                      | 290 kB  00:00:00
(3/10): libseccomp-2.3.1-2.el7.x86_64.rpm                                                     |  56 kB  00:00:00
(4/10): libcgroup-0.41-11.el7.x86_64.rpm                                                      |  65 kB  00:00:00
(5/10): policycoreutils-python-2.5-11.el7_3.x86_64.rpm                                        | 445 kB  00:00:00
(6/10): setools-libs-3.3.8-1.1.el7.x86_64.rpm                                                 | 612 kB  00:00:00
(7/10): libsemanage-python-2.5-5.1.el7_3.x86_64.rpm                                           | 104 kB  00:00:00
(8/10): python-IPy-0.75-6.el7.noarch.rpm                                                      |  32 kB  00:00:00
warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Public key for docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch.rpm is not installed
(9/10): docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch.rpm                                  |  28 kB  00:00:00
(10/10): docker-ce-17.03.1.ce-1.el7.centos.x86_64.rpm                                         |  19 MB  00:00:00
---------------------------------------------------------------------------------------------------------------------
Total                                                                                 23 MB/s |  20 MB  00:00:00
Retrieving key from https://download.docker.com/linux/centos/gpg
Importing GPG key 0x621E9F35:Userid     : "Docker Release (CE rpm) <docker@docker.com>"Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35From       : https://download.docker.com/linux/centos/gpg
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : libcgroup-0.41-11.el7.x86_64                                                                     1/10Installing : setools-libs-3.3.8-1.1.el7.x86_64                                                                2/10Installing : checkpolicy-2.5-4.el7.x86_64                                                                     3/10Installing : libsemanage-python-2.5-5.1.el7_3.x86_64                                                          4/10Installing : audit-libs-python-2.6.5-3.el7_3.1.x86_64                                                         5/10Installing : python-IPy-0.75-6.el7.noarch                                                                     6/10Installing : policycoreutils-python-2.5-11.el7_3.x86_64                                                       7/10Installing : docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch                                                 8/10
setsebool:  SELinux is disabled.
libsemanage.semanage_direct_install_info: Overriding docker module at lower priority 100 with module at priority 400.Installing : libseccomp-2.3.1-2.el7.x86_64                                                                    9/10Installing : docker-ce-17.03.1.ce-1.el7.centos.x86_64                                                        10/10Verifying  : libseccomp-2.3.1-2.el7.x86_64                                                                    1/10Verifying  : python-IPy-0.75-6.el7.noarch                                                                     2/10Verifying  : audit-libs-python-2.6.5-3.el7_3.1.x86_64                                                         3/10Verifying  : libsemanage-python-2.5-5.1.el7_3.x86_64                                                          4/10Verifying  : docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch                                                 5/10Verifying  : libcgroup-0.41-11.el7.x86_64                                                                     6/10Verifying  : policycoreutils-python-2.5-11.el7_3.x86_64                                                       7/10Verifying  : docker-ce-17.03.1.ce-1.el7.centos.x86_64                                                         8/10Verifying  : checkpolicy-2.5-4.el7.x86_64                                                                     9/10Verifying  : setools-libs-3.3.8-1.1.el7.x86_64                                                               10/10Installed:docker-ce.x86_64 0:17.03.1.ce-1.el7.centosDependency Installed:audit-libs-python.x86_64 0:2.6.5-3.el7_3.1                    checkpolicy.x86_64 0:2.5-4.el7docker-ce-selinux.noarch 0:17.03.1.ce-1.el7.centos            libcgroup.x86_64 0:0.41-11.el7libseccomp.x86_64 0:2.3.1-2.el7                               libsemanage-python.x86_64 0:2.5-5.1.el7_3policycoreutils-python.x86_64 0:2.5-11.el7_3                  python-IPy.noarch 0:0.75-6.el7setools-libs.x86_64 0:3.3.8-1.1.el7Complete!

第四步:启动

$ service docker start #启动docker
chkconfig docker on    #加入开机启动

第五步:查看版本

$ docker version

执行结果:

Client:Version:      17.03.1-ceAPI version:  1.27Go version:   go1.7.5Git commit:   c6d412eBuilt:        Mon Mar 27 17:05:44 2017OS/Arch:      linux/amd64

第六步:校验

$ docker run hello-world

执行结果:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://cloud.docker.com/For more examples and ideas, visit:https://docs.docker.com/engine/userguide/

查看docker版本:

docker --help  #帮助
docker -v      #简单查看版本
docker version #查看版本Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d/1.7.1
OS/Arch (server): linux/amd64

docker info #查看信息

Containers: 0
Images: 2
Storage Driver: devicemapperPool Name: docker-253:0-34097258-poolPool Blocksize: 65.54 kBBacking Filesystem: xfsData file: /dev/loop0Metadata file: /dev/loop1Data Space Used: 308.3 MBData Space Total: 107.4 GBData Space Available: 16.08 GBMetadata Space Used: 782.3 kBMetadata Space Total: 2.147 GBMetadata Space Available: 2.147 GBUdev Sync Supported: trueDeferred Removal Enabled: falseData loop file: /var/lib/docker/devicemapper/devicemapper/dataMetadata loop file: /var/lib/docker/devicemapper/devicemapper/metadataLibrary Version: 1.02.107-RHEL7 (2015-10-14)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 4
Total Memory: 985.6 MiB
Name: localhost.localdomain
ID: B5ZW:FJXF:FNUD:OLH7:FCNI:56DJ:XEQY:I6J4:PPHQ:OKRW:CIJK:Y26P

第三章:docker的基本概念

镜像(image)

docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变

容器(container)

镜像(image)和容器(container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等操作。

仓库(repository)

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,docker registry就是这个的服务。一个docker registry中可以包含多个仓库(repository),每个仓库可以包含多个标签(tag),每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就是常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。

1、镜像

#获取镜像docker pull ubuntu:14.04#以ubuntu:14.04镜像为基础启动并运行一个容器docker run -it --rm ubuntu:14.04 bash-it:这是两个参数,一个是-i:交互式操作,一个是-t:终端。我们这里打算进入bash执行一些命令并查看返回结果,因此我们需要交互式终端。--rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。ubuntu:14.04:这是指用 ubuntu:14.04 镜像为基础来启动容器。bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。#列出镜像
docker images / docker image ls#镜像占用
docker system df#清楚悬挂镜像
docker image prune#删除镜像
docker rmi 镜像id / docker image rm 镜像id

2、容器

#启动以守护模式创建的名字为demo-u的容器,并以交互模式进入容器
docker run --name demo-u -t -i -d ubuntu:14.04 bash#运行后就可以通过ID或名字进入容器,并输出hello world
docker exec -it demo-u /bin/sh -c "echo hello world"#查看运行中的容器
docker container ls
docker ps#所有容器
docker container ls -a
docker ps -a#查看容器日志
docker container logs demo-u
docker logs demo-u#终止容器
docker container stop demo-u
docker stop demo-u#启动容器
docker container start demo-u
docker start demo-u#重启容器
docker container restart demo-u
docker restart demo-u#进入容器,退出后容器也停止
docker attach demo-u#导出容器
docker export#导入容器
docker import#删除容器
docker container rm
docker rm 容器名/容器id#清除所有容器
docker container prune

3、数据卷

#创建数据卷
docker volume create#列出数据卷
docker volume ls#删除数据卷
docker volume rm#清除没用的数据卷
docker volume prune

4、挂载

也就是目录共享,两种方式:

  • -v
  • –mount 推荐
# 使用php本地服务器查看php环境,加载主机的 ~/web 目录到容器的 /var/www/web目录
mkdir -p ~/web && cd ~/web && echo "<?php phpinfo();" > index.php
docker run -d \--name web \-p 8080:8080 \--mount type=bind,source=`pwd`,target=/var/www/web \php:7.2-fpm \/bin/sh -c "cd /var/www/web && php -S 0.0.0.0:8080"或者docker run -d \--name web \-p 8080:8080 \-v `pwd`:/var/www/web \php:7.2-fpm \/bin/sh -c "cd /var/www/web && php -S 0.0.0.0:8080"打开浏览器 0.0.0.0:8080# 查看数据卷
docker volume inspect web

http://www.ppmy.cn/news/202395.html

相关文章

华硕笔记本电脑电源指示灯不亮、开不了机?

可能是由主板上的静电造成的&#xff0c;解决方法如下&#xff1a; &#xff08;1&#xff09;插拔电源适配器和电池等所有外接设备&#xff1b; &#xff08;2&#xff09;按住电源开关键约10秒&#xff0c;清除主板上的静电&#xff1b; &#xff08;3&#xff09;单独连接电…

金泰克S300固态硬盘开卡过程

1.拆固态硬盘 2.硬盘壳 3.查看主控芯片为sm2258 4.把自己买的硬盘盒拆了&#xff0c;只要里面的电路板&#xff0c;插上固态硬盘。![在这里插入图片描述](

第一次开卡SSD硬盘成功,主控为SM2258XT(附软件)

此文仅供新手小白参考&#xff0c;大神请忽视。谢谢&#xff01; 电脑上的一块120G SSD硬盘不知道什么原因&#xff0c;不识别硬盘了&#xff0c;用USB转接盒插上硬盘也识别不了&#xff0c;抱着死马当活马医的态度&#xff0c;大胆的开始开卡&#xff0c;或者叫量产。具体步骤…

加装固态硬盘

15年左右的老笔记本&#xff0c;dell inspiron 5455&#xff0c;C盘爆了。原硬盘为机械硬盘&#xff0c;准备加个固态硬盘做系统盘。 基本步骤&#xff1a;确认尺寸和接口型号→购买硬盘和光驱支架→安装→装系统 选择方式 一、更换 直接更换原机械硬盘。为满足日常工作学习…

记一次固态硬盘数据恢复

文章允许转载&#xff0c;请注明来源:https://blog.csdn.net/feiniao8651/article/details/80768239 背景 15年初的时候买过一个128G的固态硬盘&#xff0c;在自己的笔记本电脑上组了一个双硬盘(ssdhdd)&#xff0c;ssd作为系统盘。到今年也已经用了三年了。昨天上午的时候&a…

固态硬盘科普:SSD是怎么「开卡」的?

几乎用过SSD的朋友们都对突如其来的「掉盘」问题深有体会&#xff0c;也都尝试去解决掉盘问题。有些 DIY 玩家也会尝试去自制一块 SSD&#xff08;或者SSD U盘&#xff09;。 一般情况下&#xff0c;他们要做的一个关键步骤就是&#xff1a;开卡。那么&#xff0c;开卡是一个什…

固态硬盘之模组(成品)厂商

前言 在芯片厂商和系统厂商之间&#xff0c;有一个桥梁&#xff0c;就是模组厂。本文对模组厂介绍。 模组厂是什么&#xff1f; 模组厂是从闪存原厂买 Flash 芯片&#xff0c;从主控厂商买主控芯片&#xff0c;然后找封装厂封测成eMMC/UFS/SSD。 模组厂最重要的是要有稳定的…

闪迪ssd plus固态硬盘不识别开卡成功,慧荣SM2246XT量产教程

自己的闪迪的120g固态突然挂了&#xff0c;打售后电话被告知刚刚过保&#xff0c;气死人啊&#xff0c;于是死马当活马医&#xff0c;网上搜了搜&#xff0c;貌似可以开卡成功&#xff0c;于是开始动手操作&#xff0c;别说&#xff0c;还真的救回来了。教程如下。 注&#xf…