卸载旧版本的Docker
与依赖 1 2 3 4 5 6 7 8 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
使用存储库安装 ①安装yum配置管理器实用程序
1 2 3 yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
②设置Docker
稳定存储库
1 2 3 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
③安装Docker
1 yum install docker-ce docker-ce-cli containerd.io
常用Docker
命令 运行Docker
1 2 3 systemctl start docker 或 service docker start
查看Docker
版本
为Docker
添加阿里云镜像加速器
1 2 cd /etc/docker touch daemon.json
添加如下内容
1 2 3 { "registry-mirrors": ["https://n6syp70m.mirror.aliyuncs.com"] }
重启Docker
1 2 3 service docker restart 或 systemctl restart docker
运行一个镜像测试Docker
,是否安装成功
查看Docker
在系统的状态
1 2 3 docker system info 或 docker info
1 2 3 4 5 Containers: 1 # 容器 Running: 0 # 正在运行 Paused: 0 # 暂停 Stopped: 1 # 停止 Images: 1 # 镜像
创建一个新的容器
1 2 3 docker create 或 docker container create
显示容器列表
1 2 3 4 5 6 7 docker ps 或 docker container ls # 可选的配置项 -a 显示所有的容器 -q 仅显示 ID -s 显示总的文件大小
Docker新旧版本对比,命令皆可用
旧
新
docker attach
docker container attach # 连接到正在运行中的容器
docker build
docker image build # 构建镜像
docker commit
docker container commit # 根据已有的镜像构建
docker cp
docker container cp # 容器和本地文件系统之间复制文件/文件夹
docker create
docker container create # 创建容器
docker deploy
docker stack deploy # 部署服务
docker exec
docker container exec # 容器中执行命令
docker images
docker image ls # 查看镜像列表
docker import
docker image import # 从归档文件中创建镜像
docker inspect
docker container/image inspect # 查看容器的详细信息(即元数据)
docker kill
docker container kill # 立即停止容器中的主要进程
docker port
docker container port # 列出指定的容器的端口映射
docker restart
docker container restart # 容器重启
docker rm
docker container rm # 删除一个或多个容器
docker rmi
docker image rm # 删除本地一个或多少镜像
docker run
docker container run # 运行命令
docker start
docker container start # 容器启动
docker top
docker container top # 容器停止
……
……
命令选项 命令的选项有以下几种:长选项
、短选项
、复合选项
、无选项
。
举例:显示容器的状态
1 docker container ls --help
1 2 3 4 5 6 7 8 -a, --all Show all containers (default shows just running) -f, --filter filter Filter output based on conditions provided --format string Pretty-print containers using a Go template -n, --last int Show n last created containers (includes all states)(default -1) -l, --latest Show the latest created container (includes all states) --no-trunc Don't truncate output -q, --quiet Only display numeric IDs -s, --size Display total file sizes
1 2 3 4 docker container ls # 无选项 docker container ls -a # 短选项 docker container ls -all # 长选项 docker container ls -aq # 复合选项
查看容器的详细信息inspect
1 2 3 docker image inspect ubuntu 或 docker inspect ubuntu
inspect
三种使用方法
1 2 3 4 5 6 # 使用容器名 docker container inspect shiyanlou01 # 使用 ID ,因生成的 ID 不同,需要修改为相应的 ID docker container inspect 1f6789 #查看刚刚创建的名为 shiyanlou01 的容器的 MAC 地址 docker container inspect shiyanlou01 | grep "MacAddress"
创建容器① 1 2 3 4 5 6 7 8 9 docker container run [OPTIONS] IMAGE [COMMAND [ARGS...]] 或 docker run [OPTIONS] IMAGE [COMMAND [ARGS...]] # 一些常用的配置项为: -i 或 --interactive, 交互模式 -t 或 --tty, 分配一个 pseudo-TTY,即伪终端 --rm 在容器退出后自动移除 -p 将容器的端口映射到主机 -v 或 --volume, 指定数据卷
指定 busybox
镜像,然后运行命令 echo "hello shiyanlou"
命令
1 2 docker container run \ busybox echo "hello shiyanlou"
在 ubunutu
容器中运行 /bin/bash
命令:
1 2 3 4 docker container run \ -i -t \ ubuntu /bin/bash # 对于交互式的进程而言(例如这里的 bash),必须将 -i 和 -t 参数一起使用,才能为容器进程分配一个伪终端,通常我们会直接使用 -it
退出bash
①直接使用 exit
命令,这时候 bash
程序终止,容器进入到停止状态
②使用组合键退出,容器仍然保持运行的状态,可以再次连接到这个 bash
中,
组合键是 ctrl + p
和 ctrl +q
。即先同时按下 ctrl
和 p
键,再同时按 ctrl
和 q
键,就可以让容器在后台运行。
以 -d
参数指定容器以后台模式运行
1 2 3 4 docker container run \ -i -t -d \ ubuntu /bin/bash # 以后台模式创建并运行一个容器
创建容器② 严格意义上来讲,docker run
命令的作用并不是创建一个容器,而是在一个新的容器中运行一个命令。而用于创建一个新容器的命令为
1 2 3 4 5 6 7 8 9 docker container create [OPTIONS] IMAGE [COMMAND] [ARG...] 或 docker create [OPTIONS] IMAGE [COMMAND] [ARG...] # 常见的配置项如下所示: --name 指定一个容器名称,未指定时,会随机产生一个名字 --hostname 设置容器的主机名 --mac-address 设置 MAC 地址 --ulimit 设置 Ulimit 选项 # ulimit 是一种 linux 系统的内建功能,一些简单的描述,可以参考 https://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/ ,而对于在下面我们将要设置的部分值的含义,可以参考 https://access.redhat.com/solutions/61334
实例:指定容器的名字为 shiyanlou01
,主机名为 shiyanlou01
,设置相应的 MAC
地址,并通过 ulimit
设置最大进程数(1024:2048
分别代表软硬资源限制,详细内容可以参考上面的链接),使用 ubuntu
的镜像,并运行 bash
1 2 3 4 5 6 docker container create \ --name shiyanlou01 \ --hostname shiyanlou01 \ --mac-address 00:01:02:03:04:05 \ --ulimit nproc=1024:2048 \ -it ubuntu /bin/bash
容器创建成功后,会打印该容器的 ID
容器的标识有三种比较常见的标识方式 ①UUID
长标识符,例如
1 1f6789f885029dbdd4a6426d7b950996a5bcc1ccec9f8185240313aa1badeaff
②UUID
短标识符,从长标识符开始,只要不与其它标识符冲突,可以从头开始,任意选用位数,例如针对上面的长标识符,
可以使用 1f
,1f678
等等
③最后一种方式即是使用容器的名字Name
run
与create
的区别创建和使用容器
①create
1 2 3 4 5 6 7 8 9 #创建 docker container create \ --name shiyanlou01 \ --hostname shiyanlou01 \ --mac-address 00:01:02:03:04:05 \ --ulimit nproc=1024:2048 \ -it ubuntu /bin/bash # 启动 docker container start shiyanlou01
②run
1 2 3 4 5 6 docker container run \ --name shiyanlou01 \ --hostname shiyanlou01 \ --mac-address 00:01:02:03:04:05 \ --ulimit nproc=1024:2048 \ -it ubuntu /bin/bash
run
命令还完成一些其它的操作,例如没有镜像时会 pull
镜像,使用 -it
参数时完成了 attach
操作,使用 --rm
参数在容器退出后还会完成 container rm
操作,因此run
命令是一个综合性的命令
容器暂停进程操作 1 2 3 docker container pause CONTAINER [CONTAINER...] 或 docker pause [OPTIONS] CONTAINER [CONTAINER...]
容器恢复进程操作 1 2 3 docker container unpause CONTAINER [CONTAINER...] 或 docker unpause [OPTIONS] CONTAINER [CONTAINER...]
连接到正在运行中的容器 1 2 3 docker container attach [OPTIONS] CONTAINER 或 docker attach [OPTIONS] CONTAINER
容器的日志管理 1 2 3 4 5 6 docker container logs [OPTIONS] CONTAINER 或 docker logs [OPTIONS] CONTAINER # 常用的配置项有: -t 或 --timestamps 显示时间戳 -f 实时输出,类似于 tail -f
实例:重新运行一个容器,让它在后台执行一个不断输出的脚本,命令如下
1 2 3 4 5 docker container run \ --name shiyanlou02 \ -i -t -d \ ubuntu /bin/sh -c "while true; do echo hello shiyanlou; sleep 2; done" # "while true; do echo hello world; sleep 2; done" 是一个脚本,它的功能是每 2 秒输出一次“ hello shiyanlou ”,
查看刚刚创建的容器的日志,使用如下命令:
1 docker container logs -tf shiyanlou02
可以使用组合键 Ctrl
+ c
来结束日志跟踪
显示容器中的进程信息 1 2 3 docker container top CONTAINER 或 docker top CONTAINER
查看容器文件修改 1 2 3 docker container diff CONTAINER 或 docker diff CONTAINER
容器中执行命令 除了使用 docker container run
执行命令之外
1 2 # 在一个运行中的容器中执行命令,使用如下格式: docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
例如,我们在 shiyanlou01
容器中执行 echo "test_exec"
命令,就可以使用如下命令:
1 2 3 4 # 重启容器 docker container restart shiyanlou01 # 执行命令 docker container exec shiyanlou01 echo "test_exec"
删除容器 1 2 3 docker container rm [OPTIONS] CONTAINER [CONTAINER...] 或 docker rm [OPTIONS] CONTAINER [CONTAINER...]
删除之前创建的所有容器
1 2 3 4 docker container rm -f $(docker container ls -aq) # docker container ls -aq 会输出所有容器的 UUID , rm 命令可以根据 UUID 去删除容器 这里用来选项 -f 是因为还有在运行中的容器,所以需要强制删除。ls 列出的 UUID 传递给 rm 进行删除.
查看镜像列表 1 2 3 docker image ls 或 docker images
查看指定仓库的镜像,例如。查看 ubuntu
仓库的镜像:
搜索镜像
拉取镜像 1 2 3 4 docker image pull [OPTIONS] NAME[:TAG|@DIGEST] 或 docker pull [OPTIONS] NAME[:TAG|@DIGEST] # 常用的配置参数为 -a,代表下载仓库中的所有镜像,即下载整个存储库
下载 ubuntu:14.04
镜像,使用如下命令
1 docker image pull ubuntu:14.04
对于 pull
下来的镜像来说,其默认的保存路径为 /var/lib/docker
。因为这里的存储驱动为 aufs
,所以具体路径为 /var/lib/docker/aufs
拉取具体的镜像,有一行 Digest 信息,这就是摘要信息
构建镜像 对于我们 pull
的新镜像 ubuntu:14.04
来说,如果我们需要对其进行更新,可以创建一个容器,在容器中进行修改,然后将修改提交到一个新的镜像中。
提交修改使用如下命令
1 2 3 docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 或 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
例如,我们运行一个容器,然后在其中创建一个文件,最后使用 commit
命令
1 2 3 4 5 6 7 8 9 10 11 # 使用 run 创建运行一个新命令 docker container run \ --name shiyanlou001 \ -it busybox /bin/sh # 在运行的容器中创建两个文件,test1 和 test2 touch test1 test2 # 使用 ctrl + p 及 ctrl+q 键退出 # 使用提交命令,提交容器 shiyanlou001 的修改到镜像 busybox:test 中 docker container commit shiyanlou001 busybox:test # 查看通过提交创建的镜像 docker image ls busybox
查看更多的关于Docker
的命令
1 2 3 man docker 或 docker --help