Docker 的常用命令合集。
Docker常用命令 官方给出的概览图,很生动形象,学完下面命令后再看此图很有帮助。
帮助命令 1 2 3 docker version # 显示docker的版本信息 docker info # 显示docker的系统信息,包括镜像容器的数量 docker 命令 -help # 帮助命令
还可以查看官方的命令 帮助文档
镜像命令 docker images :查看所有本地主机上的镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@kuangshen /]# docker imagesREPOSITORY REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 10 months ago 13.3kB # 解释 REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的id CREATED 镜像的创建时间 SIZE 镜像的大小 # 可选项 -a, --a71 #列出所有镜像 -q, --quiet #只显示镜像的id
docker search (镜像名字) :搜索镜像
1 2 3 4 5 6 7 root@localhost ~]# docker search mysql NAME DESCRIPTION STARS mysql MySQL is a widely used, open-source relation… 10196 [OK] mariadb MariaDB is a community-developed fork of MyS… 3753 [OK] # 可选项 通过过滤来搜索 --filter=STARS=3000 # 搜索镜像的STARS数大于3000的
docker pull :下载镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # 下载镜像 docker pull 镜像名[:tag] [root@localhost ~] # docker pull mysql Using default tag: latest # 如果不写 tag,默认是 latest latest: Pulling from library/mysql 852e50cd189d: Pull complete # 分层下载,docker image的核心 联合文件下载 29969ddb0ffb: Pull complete a43f41a44c48: Pull complete 5cdd802543a3: Pull complete b79b040de953: Pull complete 938c64119969: Pull complete 7689ec51a0d9: Pull complete a880ba7c411f: Pull complete 984f656ec6ca: Pull complete 9f497bce458a: Pull complete b9940f97694b: Pull complete 2f069358dc96: Pull complete Digest: sha256:4bb2e81a40e9d0d59bd8e3dc2ba5e1f2197696f6de39a91e90798dd27299b093 # 唯一签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latestdocker.io/library/mysql:latest # 真实地址 # 以下两个命令相互等价 docker pull mysql docker pull docker.io/library/mysql:latest # 指定版本下载,可在docker hub上查阅版本信息 docker pull mysql:5.7
docker rmi :删除镜像(rm image)
1 2 3 docker rmi -f 镜像id # 删除指定id的镜像 docker rmi -f 镜像id 镜像id ... # 删除多个镜像 docker rmi -f $(docker images -aq) # 删除全部镜像
容器命令 说明:我们有了镜像才可以创建容器,linux,下载一个 centos 镜像来测试学习
新建容器并启动
1 2 3 4 5 6 7 8 9 10 11 12 docker run [可选参数] image(镜像名字) # 参数说明 --name="Name" # 容器名字 tomcat1 tomcat2,用来区分容器 -d # 后台方式运行 -it # 使用交互方式运行,进入容器查看内容 -p # 指定容器的端口 -p 主机端口:容器端口(常用) -p ip:主机端口:容器端口 -p 容器端口 容器端口 -P # 随机指定端口
退出当前容器
1 2 3 exit # 停止容器并退出 快捷键:Ctrl + P + Q # 容器不停止并退出
测试:启动并进入容器centos
1 2 3 4 5 6 7 8 9 [root@localhost ~]# docker run -it centos /bin/bash [root@1a52b837b77a /]# ls # 查看容器内的centos,基础版本,很多命令不完善 bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr # 退出当前容器 [root@1a52b837b77a /]# exit exit [root@localhost ~]#
列出所有运行容器
docker ps 命令
1 2 3 4 5 docker ps # 列出当前正在运行的容器 (exit退出容器,容器不再运行) 参数: -a # 列出 当前正在运行的容器 + 历史运行过的容器 -n=? # 显示最近创建的容器个数 -q # 只显示容器的编号
删除容器
1 2 3 docker rm 容器id # 删除指定id的容器,不能删除正在运行的容器 docker rm -f $(docker ps -aq) # 删除所有的容器 docker ps -a -q|xargs docker rm # 删除所有容器
启动和停止容器
1 2 3 4 docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止当前正在运行的容器 docker ki11 容器id # 强制停止当前容器
常用其他重要命令 以上命令是玩 docker 的基本命令,但这还远远不够。
后台启动容器 命令 : docker run -d 镜像名
问题 :启动后,docker ps 发现该容器被自动停掉。
原因:docker容器使用后台运行,就必须要有要一个前台进程 ,docker发现没有应用,就会自动停止
安装nginx镜像,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志 命令:docker logs
1 2 3 4 5 6 7 8 # 自己编写一段shell脚本 docker run -d centos /bin/bash -c "while true;do echo dongao;sleep 1;done" docker ps # 查看创建的正在运行的容器 CONTAINER ID IMAGE 6e703303ac9a centos docker logs -tf --tail 10 6e703303ac9a # 查看该id的前10条日志
查看容器中进程信息 命令 docker top 容器id
查看镜像的元数据 命令 docker inspect 容器id
包含非常多的容器的基本信息,很多信息值得探讨,在以后学习中会提及到。
进入当前正在运行的容器 我们通常容器都是使用后台方式运行,我们需要进入容器,修改一些配置
方式一 :命令 docker exec -it
容器id bashShell
1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6e703303ac9a centos "/bin/bash -c 'while…" 17 minutes ago Up 17 minutes condescending_vaughan [root@localhost ~]# docker exec -it 6e703303ac9a /bin/bash [root@6e703303ac9a /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 07:11 ? 00:00:00 /bin/bash -c while true;do echo dongao;sleep 1;done root 1086 0 0 07:29 pts/0 00:00:00 /bin/bash root 1110 1 0 07:29 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1 root 1111 1086 0 07:29 pts/0 00:00:00 ps -ef
方式二 :docker attach 容器id
1 2 [root@localhost ~]# docker attach 6e703303ac9a 正在执行当前的代码...
docker exec
和 docker attach
的 区别
docker exec:进入容器并开启一个新的终端,可以在里面操作(常用)
docker attach:进入容器正在执行的终端,不会启动新的进程。
从容器内拷贝文件到主机上 命令 :docker cp 容器id:容器内路径 主机的目的路径
1 [root@localhost ~]# docker cp d737d4129453:/home/dongao.java /home
所有命令(查阅)