一、帮助

1、docker 命令可显示出帮助
2、docker command --help 更深入了解指定的Docker命令

二、容器使用

(1)获取镜像

docker pull ubuntu(镜像名) (可指定版本,若不指定版本,则拉去最新版本)

 (2)启动容器

例:使用ubuntu镜像启动一个容器,并进入交互模式

docker run -it ubuntu /bin/bash
 
推出终端  exit或CTRL+D

(3)启动已停止运行的容器

     1、查看所有容器

docker ps -a

     2、使用docker start 启动一个已经停止的容器:

docker start 容器ID或者容器自动生成的名字。

(4)后台运行

     通过-d指定一个容器在后台运行

docker run -itd --name ubuntu-test ubuntu /bin/bash

    (5)停止一个容器

停止容器的命令如下:

docker stop 容器ID或容器自动生成的名字

(6)重新启动一个容器

docker restart 容器ID或者容器名称

(7)进入容器

在使用-d参数时,容器进入后台运行。此时若需要进入容器,通过以下指定进入:

docker attach 容器ID :使用该命令之后,从该容器退出时,会导致容器的停止、

docker exec -it 容器ID /bin/bash :该命令使用后,退出时,容器不会停止。该命令推荐使用

(8)导出和导入容器

     1、导出容器

docker export 容器ID > 本地文件

导出容器快照到本地文件

     2、导入容器

1、导入快照文件
cat 快照文件 | docker import - 导入的镜像

2、通过指定URL或者某个目录来导入
例:docker import http://example.com/exampleimage.tgz example/imagerepo

(9)删除容器

      1、删除容器

docker rm -f 容器ID

     2、清理所有处于终止状态的容器

docker container prune

(10)端口映射

-P:将容器内部使用的网络端口随机映射到我门使用的主机上。

使用-p参数设置不一样的端口
例:docekr run -d -p 5000:5000 taining/webapp python app.py (容器内部的5000端口映射到本地主机的5000端口)

(11)网络端口的快捷方式

通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

docker port 容器ID或容器名字

(12)查看web应用程序日志

  docker logs 【ID或者名字】可以查看容器内部的标准输出

[root@lvs1 ~]# docker logs ecb259ac3eb1
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

(13)查看web应用程序容器的进程

[root@lvs1 ~]# docker top pensive_tharp
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1834                1813                0                   15:27               ?                   00:00:00            python app.py

(14)检查web应用程序

使用docker inspect来检查Docker的底层信息。它会放回一个JSON文件记录着Docker容器的配置
和状态信息

(15)移除web应用容器

 使用docker rm命令来删除不需要的容器

[root@lvs1 ~]# docker rm pensive_tharp
Error response from daemon: You cannot remove a running container ecb259ac3eb12346c6fc68f72da32ea1b36099b0235ff2dce64d49518b8383fd. Stop the container before attempting removal or force remove

#报错如上:删除容器时,容器必须是停止状态。先停止如上容器,再删除

三、镜像使用

       Docker通过镜像来创建容器。镜像是文件,其中包含两类数据:用于创建容器的文件以及镜像的元数据。元数据包含标签、环境变量、默认的执行上下文、镜像的命令历史记录等。每个镜像都有一个全局唯一的标识符,他是由字母和数字组成的长而卫衣的字符序列。通过镜像标识符可以识别镜像和容器命令,但镜像标识符在每次修改镜像时都会发生变更,所以使用较为困难,所以一般会使用命名仓库取而代之。

(1)列出镜像列表

[root@lvs1 ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED        SIZE
centos            latest    300e315adb2f   5 months ago   209MB
training/webapp   latest    6fae60ef3446   5 years ago    349MB
选项说明:
REPOSITORY :表示镜像的仓库源
TAG :镜像的标签  代表这个仓库源的不同版本。
IMAGE ID :镜像ID
CREATED :镜像创建时间
SIZE : 镜像大小

当使用镜像来运行容器时,如果不指定镜像的版本标签,docker默认使用镜像的最新版。指定版本例子如下:

docker run -it ubuntu:14.04 /bin/bash

(2)获取一个新的镜像

 在本地主机上使用不存在的镜像时Docker自动下载这个镜像。如果想提前下载该镜像,如下命令:

docker pull 镜像名(可指定版本,若不指定版本,则默认使用最新版本)

(3)查找镜像

1、从Docker Hub 网站来搜索镜像。

2、使用docker search命令来搜索镜像。例如:

docker search httpd

(4)拉取镜像

docekr pull 镜像名

(5)删除镜像

docker rmi 镜像名

(6)创建镜像

    1、从已经创建的镜像中更新镜像,并提交

      《1》更新镜像之前,使用现有镜像创建一个容器,如下:

[root@ecs-5d84-lvs ~]# docker run -i -t centos /bin/bash
[root@da4874971316 /]#

     《2》 在运行的容器里安装或更新自己的需要,并退出容器

     《3》提交容器副本,如下:

[root@ecs-5d84-lvs ~]# docker commit -m="has update" -a="achu" 0d460723c748 achu/centos:12
sha256:f30eab1d621d1d40472f1c4cc276990727f15cf59051d011e5af5deb2019895c
[root@ecs-5d84-lvs ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
achu/centos   12        f30eab1d621d   8 seconds ago   250MB
ubuntu        latest    7e0aa2d69a15   2 weeks ago     72.7MB
centos        latest    300e315adb2f   5 months ago    209MB

-m :镜像的描述信息
-a :镜像的作者
0d460723c748 :容器名称
achu/centos:12 :指定要创建的镜像名

    2、使用Dockerfile创建新的镜像

     《1》先创建一个Dockerfile文件,写入指令告诉docker如何新建一个镜像,如下(例:使用Dcokerfile安装kodexplorer):

FROM centos:6.8  #指定使用哪个镜像源
RUN yum install wget unzip php php-gd php-mbstring -y && yum clean all
# 设置工作目录,之后的操作都在这个目录中
WORKDIR /var/www/html/
RUN wget -c http://static.kodcloud.com/update/download/kodexplorer4.25.zip  #RUN指令告诉docker在镜像内执行命令,安装什么。
RUN unzip kodexplorer4.25.zip && rm -f kodexplorer4.25.zip
RUN chown -R apache.apache .
CMD ["/usr/sbin/apachectl","-D","FOREGROUND"]

   每一条指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。 

     《2》使用Dockerfile文件,通过docker build命令来构建一个镜像。

docker build -t runoob/centos:6.7 .

-t:指定要创建的目标镜像名。

. :Dockerfile文件所在目录  可以指定Dockerfile

     《3》设置镜像标签

docker tag 镜像ID runoob/centos:dev 
dev:镜像新标签

(7)将镜像作为文件处理

   Docker load可以将镜像从文件加载到Docker中。

例子:

docker pull hello-world #拉取镜像

docker save -o myfile.tar hello-world  #将镜像打包成文件。如果省略-o选项,生成的文件会以流的形式传输到终端。

docker rmi hello-world #删除拉取的镜像

docker load -i myfile.tar #读取文件恢复镜像