欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker的常用命令汇总

程序员文章站 2022-03-12 11:53:21
...

目录

1.docker的启动、停止、重启

2.创建一个新的容器并运行一个命令

3-1.docker启动的容器列表

3-2.查看docker创建的所有容器

4.启动、停止、重启某个docker 容器

5.查看指定容器的日志记录

6.删除某个容器,若正在运行,需要先停止

7.删除所有容器

8.从Docker Hub查找镜像

9.从镜像仓库中拉取或者更新指定镜像

10. 列出本地镜像。

11.删除本地一个或多少镜像。

12.在运行的容器中执行命令

13.用于容器与主机之间的数据拷贝

14.查看容器IP地址


 

1.docker的启动、停止、重启

  1. [[email protected] ~]# service docker restart

  2. Redirecting to /bin/systemctl restart docker.service

  3. [[email protected] ~]# service docker stop

  4. Redirecting to /bin/systemctl stop docker.service

  5. [[email protected] ~]# service docker start

  6. Redirecting to /bin/systemctl start docker.service

 

2.创建一个新的容器并运行一个命令

语法  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

  • -d: 后台运行容器,并返回容器ID;

  • -i: 以交互模式运行容器,通常与 -t 同时使用;

  • -p: 端口映射,格式为:主机(宿主)端口:容器端口

  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • --name="nginx-lb": 为容器指定一个名称;

  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

  • -h "mars": 指定容器的hostname;

  • -e username="ritchie": 设置环境变量;

  • --env-file=[]: 从指定文件读入环境变量;

  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

  • -m :设置容器使用内存最大值;

  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

  • --link=[]: 添加链接到另一个容器;

  • --expose=[]: 开放一个端口或一组端口;

实例

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。

docker run --name mynginx -d nginx:latest

使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。

docker run -P -d nginx:latest

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

docker run -p 80:80 -v /data:/data -d nginx:latest

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。

$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

  1. [email protected]:~$ docker run -it nginx:latest /bin/bash

  2. [email protected]:/# 

 

3-1.docker启动的容器列表

 
  1. [[email protected] ~]# docker ps

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  3. 724e7701f0d4 centos "/bin/bash" 4 minutes ago Up 4 minutes yufei_6

  4. f9097691663e centos "/bin/bash" 5 minutes ago Up 5 minutes yufei_5

  5. [[email protected] ~]#

3-2.查看docker创建的所有容器

 
  1. [[email protected] ~]# docker ps -a

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  3. 724e7701f0d4 centos "/bin/bash" 5 minutes ago Up 5 minutes yufei_6

  4. f9097691663e centos "/bin/bash" 6 minutes ago Up 6 minutes yufei_5

  5. e59a540fb979 centos "/bin/base" 6 minutes ago Created yufei_4

  6. ff49dfedea4f centos "/bin/bash" 2 hours ago Exited (137) 10 minutes ago yufei_03

  7. d2cc70abb5a5 centos "/bin/bash" 2 hours ago Exited (127) 2 hours ago yufei_02

  8. 2d48fc5b7c17 centos "/bin/bash" 2 hours ago Exited (127) 2 hours ago yufei_01

  9. [[email protected] ~]#

 docker ps 默认列表是正在启动的容器 -a是显示所有创建的容器

 

4.启动、停止、重启某个docker 容器

 
  1. [[email protected] ~]# docker start yufei_01

  2. yufei_01

  3. [[email protected] ~]# docker stop yufei_01

  4. yufei_01

  5. [[email protected] ~]# docker restart yufei_01

  6. yufei_01

  7. [[email protected] ~]#

 

5.查看指定容器的日志记录

 
  1. [[email protected] ~]# docker logs -f yufei_01

  2. [[email protected] /]# ls

  3. anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

  4. [[email protected] /]# exit

  5. exit

  6. [[email protected] /]# ls

  7. anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

  8. [[email protected] /]#

  9. [[email protected] /]#

  10. [[email protected] /]#

  11. [[email protected] /]#

  12. [[email protected] /]#

  13. [[email protected] /]#

  14. [[email protected] /]#

  15. [[email protected] /]# cd /

  16. [[email protected] /]# ls

  17. anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

  18. [[email protected] /]# mkdir yufei

  19. [[email protected] /]# ls

  20. anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var yufei

  21. [[email protected] /]# cd yufei

  22. [[email protected] yufei]# ls

  23. yufei

  24. [[email protected] yufei]# cd yufei

  25. [[email protected] yufei]# ls

  26. application

  27. [[email protected] yufei]# cd ../../

  28. [[email protected] /]# rm -rf yufei

  29. [[email protected] /]# eixt

  30. bash: eixt: command not found

  31. [[email protected] /]# exit

 

6.删除某个容器,若正在运行,需要先停止

 
  1. [[email protected] ~]# docker rm yufei_01

  2. Error response from daemon: You cannot remove a running container 2d48fc5b7c17b01e6247cbc012013306faf1e54f24651d5e16d6db4e15f92d33. Stop the container before attempting removal or use -f

  3. [[email protected] ~]# docker stop yufei_01

  4. yufei_01

  5. [[email protected] ~]# docker rm yufei_01

  6. yufei_01

  7. [[email protected] ~]#

 

7.删除所有容器

 
  1. [[email protected] ~]# docker rm $(docker ps -a -q)

  2. Error response from daemon: You cannot remove a running container 724e7701f0d4a830167e21f75b470235a0e408fd6cc2913403426e96f69cba11. Stop the container before attempting removal or use -f

  3. Error response from daemon: You cannot remove a running container f9097691663ee36f9d2ee56afbdcca0eeb8b63e5590ddf18c0c42954c93b9f06. Stop the container before attempting removal or use -f

  4. [[email protected] ~]#

  5. [[email protected] ~]#

  6. [[email protected] ~]# docker stop yufei_6

  7. yufei_6

  8. [[email protected] ~]# docker stop yufei_5

  9. yufei_5

  10. [[email protected] ~]# docker rm $(docker ps -a -q)

  11. 724e7701f0d4

  12. f9097691663e

  13. [[email protected] ~]#

 

8.从Docker Hub查找镜像

语法  docker search [OPTIONS] TERM

OPTIONS说明:

  • --automated :只列出 automated build类型的镜像;

  • --no-trunc :显示完整的镜像描述;

  • -s :列出收藏数不小于指定值的镜像。

实例

从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像

 
  1. [email protected]:~$ docker search -s 10 java

  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED

  3. java Java is a concurrent, class-based... 1037 [OK]

  4. anapsix/alpine-java Oracle Java 8 (and 7) with GLIBC ... 115 [OK]

  5. develar/java 46 [OK]

  6. isuper/java-oracle This repository contains all java... 38 [OK]

  7. lwieske/java-8 Oracle Java 8 Container - Full + ... 27 [OK]

  8. nimmis/java-centos This is docker images of CentOS 7... 13 [OK]

 

9.从镜像仓库中拉取或者更新指定镜像

语法  docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS说明:

  • -a :拉取所有 tagged 镜像

  • --disable-content-trust :忽略镜像的校验,默认开启

实例

  1. 从Docker Hub下载java最新版镜像。

  2. docker pull java

  3. 从Docker Hub下载REPOSITORY为java的所有镜像。

  4. docker pull -a java

sudo docker pull image的名字和对应的版本号,如果不指定版本号,拉取的镜像的版本会默认为latest

拉指定版本如下:

 
  1. docker pull mongo:3.2.4

  2. docker pull redis:3.2

  3. docker pull centos:6

 

10. 列出本地镜像。

语法  docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

  • --digests :显示镜像的摘要信息;

  • -f :显示满足条件的镜像;

  • --format :指定返回值的模板文件;

  • --no-trunc :显示完整的镜像信息;

  • -q :只显示镜像ID。

实例

查看本地镜像列表。

 
  1. [email protected]:~$ docker images

  2. REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE

  3. mymysql                 v1                  37af1236adef        5 minutes ago       329 MB

  4. runoob/ubuntu           v4                  1c06aa18edee        2 days ago          142.1 MB

  5. <none>                  <none>              5c6e1090e771        2 days ago          165.9 MB

  6. httpd                   latest              ed38aaffef30        11 days ago         195.1 MB

  7. alpine                  latest              4e38e38c8ce0        2 weeks ago         4.799 MB

  8. mongo                   3.2                 282fd552add6        3 weeks ago         336.1 MB

  9. redis                   latest              4465e4bcad80        3 weeks ago         185.7 MB

  10. php                     5.6-fpm             025041cd3aa5        3 weeks ago         456.3 MB

  11. python                  3.5                 045767ddf24a        3 weeks ago         684.1 MB

  12. ...

列出本地镜像中REPOSITORY为ubuntu的镜像列表。

 
  1. [email protected]:~# docker images  ubuntu

  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

  3. ubuntu              14.04               90d5884b1ee0        9 weeks ago         188 MB

  4. ubuntu              15.10               4e3b13c8a266        3 months ago        136.3 MB

 

11.删除本地一个或多少镜像。

语法  docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

  • -f :强制删除;

  • --no-prune :不移除该镜像的过程镜像,默认移除;

实例

强制删除本地镜像runoob/ubuntu:v4。

 
  1. [email protected]:~# docker rmi -f runoob/ubuntu:v4

  2. Untagged: runoob/ubuntu:v4

  3. Deleted: sha256:1c06aa18edee44230f93a90a7d88139235de12cd4c089d41eed8419b503072be

  4. Deleted: sha256:85feb446e89a28d58ee7d80ea5ce367eebb7cec70f0ec18aa4faa874cbd97c73

 

12.在运行的容器中执行命令

语法  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

  • -d :分离模式: 在后台运行

  • -i :即使没有附加也保持STDIN 打开

  • -t :分配一个伪终端

实例

在容器mynginx中以交互模式执行容器内/root/runoob.sh脚本

 
  1. [email protected]:~$ docker exec -it mynginx /bin/sh /root/runoob.sh

  2. http://www.runoob.com/

在容器mynginx中开启一个交互模式的终端  这样可以得到多个shell 同时作用于一个容器

 
  1. [email protected]:~$ docker exec -i -t  mynginx /bin/bash

  2. [email protected]:/#

 

13.用于容器与主机之间的数据拷贝

语法  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

          docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:

  • -L :保持源目标中的链接

实例

将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。

docker cp /www/runoob 96f7f14e99ab:/www/

将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。

docker cp /www/runoob 96f7f14e99ab:/www

将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。

docker cp  96f7f14e99ab:/www /tmp/

 

14.查看容器IP地址

 
  1. #查看所有容器

  2. docker inspect --format='{{.NetworkSettings.IPAddress}}' $(docker ps -a -q)

  3.  
  4. #查看单个容器

  5. docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-ID>

  6. docker inspect <container id>

  7. docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id