Docker常用命令
Docker的常用命令
帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令
帮助文档的地址:https://docs.docker.com/engine/reference/commandline/
镜像命令
docker images 查看所有本地的主机上的镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB
# REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像id CREATED 镜像创建时间 SIZE 镜像的大小
[root@192 ~]# docker images --help
# 可选项
# -a, --all 列出所有镜像
# -f, --filter 过滤
# -q, --quiet 只显示镜像的id
docker search 搜索镜像
[root@192 ~]# docker search mysql
docker pull 下载镜像
# docker pull 镜像名[:tag]
[root@192 ~]# docker pull mysql
Using default tag: latest # 不加:tag,默认为latest最新版本
latest: Pulling from library/mysql
bb79b6b2107f: Pull complete # 分层下载,docker image的核心 联合文件系统
49e22f6fb9f7: Pull complete
842b1255668c: Pull complete
9f48d1f43000: Pull complete
c693f0615bce: Pull complete
8a621b9dbed2: Pull complete
0807d32aef13: Pull complete
a56aca0feb17: Pull complete
de9d45fd0f07: Pull complete
1d68a49161cc: Pull complete
d16d318b774e: Pull complete
49e112c55976: Pull complete
Digest: sha256:8c17271df53ee3b843d6e16d46cff13f22c9c04d6982eb15a9a47bd5c9ac7e2d # 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
docker rmi 删除镜像
# 删除指定镜像
[root@192 ~]# docker rmi -f 镜像id
# 删除多个镜像
[root@192 ~]# docker rmi -f 镜像id 镜像id 镜像id
# 删除全部镜像
[root@192 ~]# docker rmi -f $(docker images -aq)
容器命令
注意:有了镜像才可以创建容器
docker pull centos
新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" 容器名字
-d 后台方式运行
-it 使用交互式方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P 随机指定端口
# 启动并进入容器
[root@192 ~]# docker run -it centos /bin/bash
[root@9fe05fd16995 /]#
# 查看容器内的centos
[root@9fe05fd16995 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# 退出容器
[root@9fe05fd16995 /]# exit
exit
[root@192 ~]# ls
add_num.sh dir888 initial-setup-ks.cfg 公共 视频 文档 音乐
anaconda-ks.cfg file888 test.sh 模板 图片 下载 桌面
列出所有运行中的容器
# 列出当前正在运行的容器
docker ps
# 列出当前正在运行的容器以及运行过的容器
docker ps -a
# 只显示容器id
docker ps -q
退出容器
exit # 直接停止容器并退出
Ctrl + p + q # 容器不停止只是退回
删除容器
# 删除指定的容器,不能删除运行中的容器,若要删除使用rm -f强制删除
docker rm 容器id
# 删除所有的容器
docker rm -f $(docker ps -aq)
启动和停止容器
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
常用的其他命令
后台启动容器
# docker run -d 镜像名
[root@192 ~]# docker run -d centos
ca2a2a7c2e727d21e30cbe03b660d5be260273bc914f74688a9434ad5df38f16
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 问题:docker ps时发现centos没有运行
# 注意:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
查看日志
docker logs
docker logs -ft --tail 10 容器id
查看容器中的进程信息
docker top 容器id
查看容器的元数据
docker inspect 容器id
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,但有时需要进入容器
# 方式一
docker exec -it 容器id /bin/bash
# 测试
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f666ddf5ec8b centos "/bin/bash" 28 seconds ago Up 27 seconds vigilant_lichterman
[root@192 ~]# docker exec -it f666ddf5ec8b bashShell
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"bashShell\": executable file not found in $PATH": unknown
[root@192 ~]# docker exec -it f666ddf5ec8b /bin/bash
[root@f666ddf5ec8b /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
# 方式二
docker attach 容器id
# docker exec 进入容器后开启一个新的终端,可以在里面操作
# docker attach 进入容器正在执行的终端,不会启动新的进程
从容器拷贝文件到主机
docker cp 容器id:容器内文件路径 目的地主机路径
[root@192 ~]# docker cp f666ddf5ec8b:/home/test.py /home