Docker的常用命令
Docker的帮助文档: https://docs.docker.com/engine/reference/run/
帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令
镜像命令
查看镜像
docker images
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 13 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
# 可选项
-a, --all # 列出所有的镜像
-q, --quiet # 只显示镜像的id
搜索镜像
docker search
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9134 [OK]
# 解释
NAME 镜像名称
DESCRIPTION 镜像的描述
STARS 镜像的stars ,类似github的start
OFFICIAL 是否为官方镜像
AUTOMATED 自动构建。
#可选项
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-f <过滤条件>:列出收藏数不小于指定值的镜像。 docker search -f=stars=9000 redis
拉取镜像
docker pull
具体tag 版本查看: https://hub.docker.com/
# 拉取 tag版本为:8.0.23 的mysql 镜像,如果不指定版本,默认拉最新的
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker pull mysql:8.0.23
8.0.23: Pulling from library/mysql
a076a628af6f: Pull complete
f6c208f3f991: Pull complete
88a9455a9165: Pull complete
406c9b8427c6: Pull complete
7c88599c0b25: Pull complete
25b5c6debdaf: Pull complete
43a5816f1617: Pull complete
1a8c919e89bf: Pull complete
9f3cf4bd1a07: Pull complete
80539cea118d: Pull complete
201b3cad54ce: Pull complete
944ba37e1c06: Pull complete
Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c
Status: Downloaded newer image for mysql:8.0.23
docker.io/library/mysql:8.0.23
#在次查看服务器的镜像
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.23 c8562eaf9d81 5 weeks ago 546MB
hello-world latest bf756fb1ae65 13 months ago 13.3kB
Docke 删除本地镜像
docker rmi
#强制删除本地 hello-world 镜像 -f:强制删除;
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker rmi -f hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:31b9c7d48790f0d8c50ab433d9c3b7e17666d6993084c002c2ff1ca09b96391d
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
容器命令
**docker run :**创建一个新的容器并运行一个命令
#先拉取nginx 到本地镜像中,有了镜像我们才能创建容器
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a076a628af6f: Already exists
0732ab25fa22: Pull complete
d7f36f6fe38f: Pull complete
f72584a26f32: Pull complete
7125e4df9063: Pull complete
Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
#后台启动本地的nginx 容器,并命名为 nginx-997
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker run --name nginx-997 -p 80:80 -d nginx
647081828a92616cf554953cf58f46f52533365544763f21f550d568d3c18938
#解释
-name nginx-997:容器名称。
-p 80:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
-it 使用交互方式运行,进入容器查看区分
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P 随机指定端口
![image-20210223103814554](/Users/shchen/Library/Application%20Support/typora-user-images/image-20210223103814554.png)
docker ps 查看当前运行中的容器
docker ps -a 查看所有容器,包括停止的
#查看当前运行中的容器
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
647081828a92 nginx "/docker-entrypoint.…" 2 minutes ago Up About a minute 0.0.0.0:80->80/tcp nginx-997
#查看所有容器,包括停止的
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
647081828a92 nginx "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp nginx-997
0de93942f757 nginx "/docker-entrypoint.…" 20 minutes ago Exited (0) 14 minutes ago nginx-996
aca18ef99549 bf756fb1ae65 "/hello" 12 hours ago Exited (0) 12 hours ago optimistic_meninsky
docker stop :停止一个运行中的容器
#查看运行中的容器
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
647081828a92 nginx "/docker-entrypoint.…" 9 minutes ago Up 9 minutes 0.0.0.0:80->80/tcp nginx-997
#停止 CONTAINER ID 为647081828a92 的容器
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker stop 647081828a92
647081828a92
docker start :启动一个或多个已经被停止的容器
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker start nginx-997
nginx-997
docker restart :重启容器
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker restart nginx-997
nginx-997
docker kill 强制停止容器
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker kill nginx-997
nginx-997
删除容器
# 删除指定容器,不能删除正在运行的容器,如果要强制删除
rm -f[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker rm -f
#解释
docker rm 容器id
docker rm -f $(docker ps -aq) # 删除所有的容器
docker ps -aq|xargs docker rm # 删除所有的容器
其他命令
docker inspect 查看镜像元数据
docker exec -it 容器id baseShell || docker attach 容器id
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
290c141bc1d4 nginx "/docker-entrypoint.…" 23 seconds ago Up 23 seconds 0.0.0.0:80->80/tcp nginx-997
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker exec -it 290c141bc1d4 /bin/bash
root@290c141bc1d4:/# ls
bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker attach 290c141bc1d4
# docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach # 进入容器正在执行的终端,不会启动新的进程
docker cp [r] 容器id :容器内路径 目的地主机路径
#进入容器 新建一个test.java 文件
root@290c141bc1d4:/# cd home/
root@290c141bc1d4:/home# ls
root@290c141bc1d4:/home# touch test.java
root@290c141bc1d4:/home# ls
#从容器内向宿主机cp
[root@iZ2zeixqaqrvghrgvk058mZ ~]# docker cp 290c141bc1d4:/home/test.java /home/
#cp 完成
[root@iZ2zeixqaqrvghrgvk058mZ home]# ls
test.java