目录

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. [root@localhost ~]# service docker restart
2. Redirecting to /bin/systemctl restart docker.service
3. [root@localhost ~]# service docker stop
4. Redirecting to /bin/systemctl stop docker.service
5. [root@localhost ~]# 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. runoob@runoob:~$ docker run -it nginx:latest /bin/bash
2. root@b8573233d675:/# 

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


 

1. [root@localhost ~]# 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. [root@localhost ~]# 

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


 


1. [root@localhost ~]# 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. [root@localhost ~]# 

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

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


 

1. [root@localhost ~]# docker start yufei_01
2. yufei_01
3. [root@localhost ~]# docker stop yufei_01
4. yufei_01
5. [root@localhost ~]# docker restart yufei_01
6. yufei_01
7. [root@localhost ~]# 

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


 


1. [root@localhost ~]# docker logs -f yufei_01
2. [root@2d48fc5b7c17 /]# 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. [root@2d48fc5b7c17 /]# exit
5. exit
6. [root@2d48fc5b7c17 /]# 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. [root@2d48fc5b7c17 /]# 
9. [root@2d48fc5b7c17 /]# 
10. [root@2d48fc5b7c17 /]# 
11. [root@2d48fc5b7c17 /]# 
12. [root@2d48fc5b7c17 /]# 
13. [root@2d48fc5b7c17 /]# 
14. [root@2d48fc5b7c17 /]# 
15. [root@2d48fc5b7c17 /]# cd / 
16. [root@2d48fc5b7c17 /]# 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. [root@2d48fc5b7c17 /]# mkdir yufei
19. [root@2d48fc5b7c17 /]# 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. [root@2d48fc5b7c17 /]# cd yufei
22. [root@2d48fc5b7c17 yufei]# ls
23. yufei
24. [root@2d48fc5b7c17 yufei]# cd yufei
25. [root@2d48fc5b7c17 yufei]# ls
26. application
27. [root@2d48fc5b7c17 yufei]# cd ../../
28. [root@2d48fc5b7c17 /]# rm -rf yufei
29. [root@2d48fc5b7c17 /]# eixt
30. bash: eixt: command not found
31. [root@2d48fc5b7c17 /]# exit

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


 


1. [root@localhost ~]# 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. [root@localhost ~]# docker stop yufei_01
4. yufei_01
5. [root@localhost ~]# docker rm yufei_01
6. yufei_01
7. [root@localhost ~]# 

7.删除所有容器


 

1. [root@localhost ~]# 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. [root@localhost ~]# 
5. [root@localhost ~]# 
6. [root@localhost ~]# docker stop yufei_6
7. yufei_6
8. [root@localhost ~]# docker stop yufei_5
9. yufei_5
10. [root@localhost ~]# docker rm $(docker ps -a -q)
11. 724e7701f0d4
12. f9097691663e
13. [root@localhost ~]# 

8.从Docker Hub查找镜像

语法  docker search [OPTIONS] TERM

OPTIONS说明:

  • --automated :只列出 automated build类型的镜像;
  • --no-trunc :显示完整的镜像描述;
  • -s :列出收藏数不小于指定值的镜像。

实例

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


 

1. runoob@runoob:~$ 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。

实例

查看本地镜像列表。


 


runoob@runoob:~$ docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE

mymysql                 v1                  37af1236adef        5 minutes ago       329 MB

runoob/ubuntu           v4                  1c06aa18edee        2 days ago          142.1 MB

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

httpd                   latest              ed38aaffef30        11 days ago         195.1 MB

alpine                  latest              4e38e38c8ce0        2 weeks ago         4.799 MB

mongo                   3.2                 282fd552add6        3 weeks ago         336.1 MB

redis                   latest              4465e4bcad80        3 weeks ago         185.7 MB

php                     5.6-fpm             025041cd3aa5        3 weeks ago         456.3 MB

python                  3.5                 045767ddf24a        3 weeks ago         684.1 MB

...

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


 


root@runoob:~# docker images  ubuntu

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

ubuntu              14.04               90d5884b1ee0        9 weeks ago         188 MB

ubuntu              15.10               4e3b13c8a266        3 months ago        136.3 MB

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

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

OPTIONS说明:

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

实例

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


 


root@runoob:~# docker rmi -f runoob/ubuntu:v4

Untagged: runoob/ubuntu:v4

Deleted: sha256:1c06aa18edee44230f93a90a7d88139235de12cd4c089d41eed8419b503072be

Deleted: sha256:85feb446e89a28d58ee7d80ea5ce367eebb7cec70f0ec18aa4faa874cbd97c73

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

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

OPTIONS说明:

  • -d :分离模式: 在后台运行
  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端

实例

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


 


runoob@runoob:~$ docker exec -it mynginx /bin/sh /root/runoob.sh

http://www.runoob.com/

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


 


runoob@runoob:~$ docker exec -i -t  mynginx /bin/bash

root@b1a0703e41e7:/#

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地址


 


#查看所有容器

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

#查看单个容器

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

docker inspect <container id>

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