Docker如今基本成为了运维人员必须掌握的专业技能之一,而docker默认没有图形界面管理,所以掌握docker-client命令行操做就显得十分重要。html
# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo或者使用阿里源# curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo# yum makecache fast# yum install -y docker-ce-18.03.0.ce #以安装docker-ce-18.03.0版本为例# systemctl start docker && systemctl enable docker
docker search 用来搜索可用的相关镜像。linux
# docker search nginxNAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 11083 [OK]
docker pull 下载指定镜像。nginx
# docker pull docker.io/nginxUsing default tag: latest latest: Pulling from library/nginx f7e2b70d04ae: Pull complete 08dd01e3f3ac: Pull complete d9ef3a1eb792: Pull complete Digest: sha256:98efe605f61725fd817ea69521b0eeb32bef007af0e3d0aeb6258c6e6fe7fc1a Status: Downloaded newer image for nginx:latest
docker pull 时能够指定镜像标签,不指定默认为latest。docker
docker images 查看已下载的本地docker镜像。shell
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 881bd08c0b08 13 days ago 109MB
能够看到刚刚下载到本地的 nginx:latest 镜像。centos
docker run 启动docker镜像为容器。bash
# docker run -itd -p 80:80 --name nginx nginx:latest a38795771660b7e52ba7719dd936fbda36666ceff95fe66e79b6b845f278e9e9
上面命令后加上/bin/bash
就能够进入到容器中。服务器
docker run 有一些参数选项:app
-i:interactive交互 -t:tty终端 -d:daemon后台启动 -p:端口映射,前面的端口为宿主机监听端口,后面的端口为容器监听端口 --name:指定启动后容器的名字 --rm:退出容器后删除容器
使用 docker run 启动镜像为容器以前,若是本地没有镜像,会自动pull镜像。运维
docker ps 查看当前正在运行中的容器。
# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a38795771660 nginx:latest "nginx -g 'daemon of…" 9 minutes ago Up 9 minutes 0.0.0.0:80->80/tcp nginx
docker ps 还有一个经常使用的参数选项:
-a:查看当前系统中全部的容器,包括运行中、暂停中和已中止的容器
docker inspect 查看容器的详细信息。
# docker inspect nginx |grep -i ipaddr "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2",
查看容器的详细信息,并从信息中过滤IP地址。
docker exec 在docker容器中执行命令。
df -h
命令:# docker exec nginx df -hFilesystem Size Used Avail Use% Mounted on overlay 36G 3.7G 32G 11% / tmpfs 64M 0 64M 0% /dev tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos_master1-root 36G 3.7G 32G 11% /etc/hosts shm 64M 0 64M 0% /dev/shm tmpfs 1.9G 0 1.9G 0% /proc/acpi tmpfs 1.9G 0 1.9G 0% /proc/scsi tmpfs 1.9G 0 1.9G 0% /sys/firmware
已经启动的nginx容器能够这样进入:
# docker exec -it nginx bash
此处的 -it 参数选项与 docker run 中参数做用一致。
# docker exec nginx touch /tmp/1.txt# docker exec -it nginx bashroot@a38795771660:/# ls /tmp/1.txt
docker start/stop 启动、中止指定的容器。
# docker stop nginxnginx# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a38795771660 nginx:latest "nginx -g 'daemon of…" 28 minutes ago Exited (0) 9 seconds ago nginx# docker start nginxnginx# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a38795771660 nginx:latest "nginx -g 'daemon of…" 29 minutes ago Up 30 seconds 0.0.0.0:80->80/tcp nginx
另外,还能够使用 docker restart 来重启指定的容器。
docker kill 用来kill掉运行中的容器。
# docker kill nginxnginx# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a38795771660 nginx:latest "nginx -g 'daemon of…" 37 minutes ago Exited (137) 15 seconds ago nginx
docker kill 与 docker stop 做用相似,但后者要“温柔”一些。遇到 docker stop 也没法关闭的容器,能够使用 docker kill 强行关闭。
docker rm 删除指定的容器。
# docker rm nginxError response from daemon: You cannot remove a running container a38795771660b7e52ba7719dd936fbda36666ceff95fe66e79b6b845f278e9e9. Stop the container before attempting removal or force remove# docker rm -f nginxnginx# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker rm 的经常使用参数选项:
-f:强制删除正在运行中的容器
docker rm 没法直接删除正在运行中的容器,建议先中止容器,再删除容器。
docker rm 删除指定的镜像。
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 881bd08c0b08 13 days ago 109MB# docker run -itd -p 80:80 --name nginx nginx:latest b34323364cf285d17f25f7f338f298f73edb49ddf2b72d0aa31484676092cfa6# docker rmi nginx:latest Error response from daemon: conflict: unable to remove repository reference "nginx:latest" (must force) - container b34323364cf2 is using its referenced image 881bd08c0b08# docker rmi -f nginx:latest Untagged: nginx:latest Untagged: nginx@sha256:98efe605f61725fd817ea69521b0eeb32bef007af0e3d0aeb6258c6e6fe7fc1a
docker rmi 的经常使用参数选项:
-f:强制删除正在运行中的容器的镜像
docker rmi 没法直接删除当前存在(无论时正在运行中仍是已经中止)的容器的镜像,建议先中止、删除容器,再删除对应镜像。
除了上面的命令之外,还有不少命令也是常常使用的。
Docker | 命令 | 做用 |
---|---|---|
docker | push | 推送指定镜像或者库镜像到docker源服务器 |
docker | history | 展现一个镜像造成历史 |
docker | attach | 当前shell下attach链接指定运行镜像 |
docker | build | 经过Dockerfile定制镜像 |
docker | commit | 提交当前容器为新的镜像 |
docker | cp | 宿主机和容器之间互相拷贝文件或目录 |
docker | create | 建立一个新的容器,同run,但不启动容器 |
docker | diff | 查看容器变化 |
docker | events | 从docker服务获取容器实时事件 |
docker | export | 导出容器的内容流做为一个tar归档文件[对应import] |
docker | import | 从tar包中的内容建立一个新的文件系统镜像[对应export] |
docker | info | 显示系统相关信息 |
docker | load | 从一个tar包中加载一个镜像[对应save] |
docker | login | 注册或登陆一个docker源服务器 |
docker | logout | 从docker源服务器中登出 |
docker | logs | 输出当前容器的日志信息 |
docker | port | 查看映射端口对应的容器内部源端口 |
docker | pause | 暂停容器 |
docker | restart | 重启运行中的容器 |
docker | save | 保存一个镜像为一个tar包[对应load] |
docker | tag | 给当前镜像打标签 |
docker | top | 查看容器中运行的进程信息 |
docker | unpause | 恢复暂停的容器 |
docker | version | 查看docker版本号 |
docker | wait | 截取容器中止时的退出状态值 |