Docker常用命令集锦
在虚拟机中运行docker服务(确保服务已安装)
sudo systemctl start docker
重启Docker服务
systemctl restart docker / service docker restart
守护进程重启
systemctl daemon-reload
关闭Docker
docker service docker stop / docker systemctl stop docker
设置Docker服务开机启动
systemctl enable docker.service
1、docker所有命令查看
docker --helper
2、某个具体命令的使用帮助,比如run命令的使用
docker run --help
3、run命令:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
IMAGE:指容器运行的镜像名,默认在本地找,如果本地没找到则去仓库寻找并下载安装。
部分OPTIONS参数说明:
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--restart=always: 创建容器时设置容器自动重启
docker run ubuntu:15.10 /bin/echo "Hello world" 表示运行镜像名为:ubuntu:15.10 并用bin目录下echo文件 打印字符串
docker run -i -t ubuntu:15.10 /bin/bash docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
cat /proc/version 用来查看当前镜像的版本?我测试的时候显示宿主机的linux版本
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
这句是说在bin/sh中 运行"while true; do echo hello world; sleep 1; done"脚本不停打印hello world方便我们查看效果命令执行完成后,会返回当前docker的ID值
docker run -p 80:80 -v /data:/data -d nginx:latest 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py 如果要绑定 UDP 端口,可以在端口后面加上 /udp
docker run -p 127.0.0.1:8080:8080 --name="XX_Manager_Test" -d xxmanager_test:v1 给容器命名且在后台运行
docker run -d -p 8080:80 --name="OA_Manager_v1_Test" oamanager_test:v1 可通过-p指令建立宿主对容器对应端口的访问(注:8080为宿主端口,安全组中应放开对8080的访问)
docker run -d --net=host --name="OA_Manager_v1_Test" oamanager_test:v1 此方式不能指定端口
docker port 容器的名字 查看某个容器对应的端口号
4、容器相关操作
docker start 容器ID或名称 启动容器
exit 或者 Ctrl + D 可以退出容器
docker stop 容器ID或容器名称 停止容器
docker rm 容器ID或名称 移除容器(移除前请确保容器是停止状态否则会报错:Error response from daemon: You cannot remove a running container......)
docker ps 查看当前启动的所有容器(含ID、名称及其他信息)
docker ps -l 查看最后一次创建的容器
docker ps -a 查看之前所有创建过的容器
docker logs 容器ID或名称,查看容器logs的标准输出 eg:docker logs f62f773aec0c
docker port 容器的名字 查看某个容器对应的端口号
docker update --restart=always 容器名称或ID 设置容器随服务启动而启动
5、镜像相关操作
docker images 查看主机本地所有镜像
参数说明
-
REPOSITORY:表示镜像的仓库源
-
TAG:镜像的标签(同一个仓库源,标签可以有多个表示多个不同的版本)
-
IMAGE ID:镜像ID
-
CREATED:镜像创建时间
-
SIZE:镜像大小
docker run -t -i ubuntu:15.10 /bin/bash 运行ubuntu仓库源Tag为15.10的镜像 (如果不注明tag,那么将使用ubuntu:latest镜像)
docker pull ubuntu:13.10 预先下载某个镜像
docker search httpd 搜索某类镜像 【其中name为源名称 description是描述 stars表示热度 official表示是否官方发布】
创建镜像的两种方式:
a、更新镜像
1、docker run -t -i ubuntu:15.10 /bin/bash 启动一个原始镜像,然后安装自己需要的软件
2、在运行的容器内运行 apt-get update 命令进行更新
3、完成后 exit 退出
4、用docker ps 查看之前运行的容器的ID值(e218edb101611)
5、用commit来提交最新的镜像 docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
-m:是提交的描述信息 -a:是作者名字 e218edb10161:是容器ID runoob/ubuntu:v2 是新镜像的名字
6、使用docker images 来查看新创建的镜像
b、创建新镜像
touch Dockerfile 或者vi Dockerfile
2、编辑Dockerfile文件的内容并保存:
# This is a comment
FROM ubuntu:14.04
MAINTAINER bill <bill@docker.com>
RUN apt-get -qq update
RUN apt-get -qqy
install
ruby ruby-dev
RUN gem
install
sinatra
参数说明: # 表示注释 FROM 表示 docker以哪个镜像作为基础 MAINTAINER 表示维护者的信息 RUN 告诉docker,在镜像内执行命令,安装了什么
3、通过 docker build 命令来构建一个镜像【注意命令 6.7 后面的 . 号,它表示当前目录下的Dockerfile文件】
docker build -t runoob/centos:6.7 . 【-t :指定要创建的目标镜像名 . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径 】
4、命令执行完成之后就可以通过 docker images 命令查看新建的镜像
镜像删除
1、删除镜像时请确保,停止所有的container
2、docker rmi 镜像ID 【如果在使用会提示错误】
3、docker rmi -f 镜像ID 【强制删除】
导出
如果要存出镜像到本地文件,可以使用docker save命令。例如,存出本地的ubuntu:14.04镜像为文件ubuntu_14.04.tar:
$ sudo docker save -o /home/user/images/ubuntu_14.04.tar ubuntu:14.04
导入
可以使用docker load从存出的本地文件中再导入到本地镜像库,例如从文件ubuntu_14.04.tar导入镜像到本地镜像列表,如下所示:
$ docker load --input ubuntu_14.04.tar
$ docker load -i ubuntu_14.04.tar
$ docker load < ubuntu_14.04.tar