一、帮助
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 #读取文件恢复镜像