1. 帮助命令
bash
docker version # 显示docker版本信息
docker info # 显示docker系统信息,包括镜像和容器
docker 命令 --help # 帮助命令
2. 镜像命令
bash
docker images # 查看本地主机上的镜像
bash
# 搜索镜像
docker search 镜像名称 # 搜索镜像
# 下载镜像
docker pull 镜像名称 # 下载镜像,`docker pull`默认拉取最新版的镜像
docker pull 镜像名称:版本号 #下载指定版本镜像,例如:docker pull mysql:5.7
# 删除镜像
docker rmi -f 容器ID # 删除指定容器
docker rmi -f 容器ID 容器ID 容器ID # 删除多个容器
docker rmi -f $(docker images -aq) # 删除全部容器
3.容器命令
说明:有了镜像才可以创建容器!!
(以下载一个CentOS镜像来测试学习)
3.1 拉取镜像 & 启动容器
bash
docker pull centos
# 测试:启动并进入容器
docker run -it centos /bin/bash
ls # 查看容器内的centos
exit #退出容器
3.2 列出所有运行的容器
bash
docker ps # 列出当前正在运行的容器
docker ps -a # 列出所有运行的容器,包括历史运行过的容器
docker ps -aq # 只列出所有运行的容器的编号,包括历史运行过的容器
3.3 退出容器
bash
exit # 直接退出容器
快捷键: Ctrl + p + q # 容器不停止退出
3.4 删除容器
bash
docker rm 容器ID # 删除指定容器,不能删除正在运行的容器。如果要强制删除使用rm -f
docker rm -f $(docker ps -aq) # 删除全部容器
docker ps -a -q|xargs docker rm # 删除全部容器
3.5 启动&停止容器
bash
docker start 容器ID # 启动容器
docker restart 容器ID # 重启容器
docker stop 容器ID # 停止当前正在运行容器
docker kill 容器ID # 强制停止当前容器
4. 其他常用命令
4.1 后台启动容器
bash
# 命令 docker run -d 镜像名
docker run -d centos
- 常见的坑:docker ps 后发现centos停止了
原因:docker 容器使用后台运行,就必须要有一个前台进程。Docker发现没有应用,就会自动停止。
4.2 查看日志命令
bash
docker logs -tf --tail 显示日志条数 # 容器,没有日志
示例:
- 自己编写一段shell脚本:
docker run -d centos /bin/bash -c "while true;do echo Hello World;sleep 1;done"
- 查看正在运行的容器:
docker ps
log
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2e8c5e2d761 centos "/bin/bash -c 'while..." 5 seconds ago Up 4 seconds cool_neumann
- 显示日志:
docker logs -tf --tail 10 e2e8c5e2d761
bash
-tf :显示日志
-tail number :显示日志条数
4.3 查看容器中的进程信息
bash
docker top 容器id
4.4 查看镜像元数据
bash
docker inspect 容器id
4.5 进入当前正在运行的容器
通常容器都是使用后台方式运行,但是有时候需要进入到容器中修改一些配置。介绍两种进入正在运行的容器的方式。
方式一:
bash
# 语法
docker exec -it [容器id] [bashshell]
## 举例
docker exec -it e2e8c5e2d761 /bin/bash
方式二:
bash
docker attach 容器id # 显示正在执行的当前代码
二者区别:
docker exec
:进入容器后开启一个新的终端,可以在里面进行操作
docker attach
:进入容器正在执行的终端,不会启动新的进程
4.6 从容器内拷贝文件到宿主机
语法:docker cp 容器id:容器内路径 目的主机路径
示例:
bash
# 进入容器
[root@localhost ~]# docker exec -it e2e8c5e2d761 /bin/bash
[root@e2e8c5e2d761 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# 在容器中创建test.java
[root@e2e8c5e2d761 /]# touch test.java
[root@e2e8c5e2d761 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test.java tmp usr var
[root@e2e8c5e2d761 /]# pwd
/
[root@e2e8c5e2d761 /]# mv test.java /home
[root@e2e8c5e2d761 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@e2e8c5e2d761 /]# cd /home
[root@e2e8c5e2d761 home]# ls
test.java
[root@e2e8c5e2d761 home]# exit
exit
[root@localhost ~]# ls
anaconda-ks.cfg Desktop initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐
# 将容器中的test.java拷贝到主机上
[root@localhost Desktop]# docker cp e2e8c5e2d761:/home/test.java /home
Successfully copied 1.54kB to /home
[root@localhost Desktop]# cd /home
[root@localhost home]# ls
mysql qinwei test.java