最近公司项目需要使用docker进行项目部署,现记录下这段时间的学习内容,本章主要记录docker的常用命令。

一、命令清单

1 docker help

docker辅助器 docker --help_docker辅助器

 

针对某个命令想知道其详细参数的话,可以输入:

1 docker COMMAND --help

如,想查看run的详细信息:

1 docker run --help

二、镜像常用命令

搜索镜像,利用search命令。当然我们也可以上docker hub上去搜索:https://hub.docker.com/search?q=&type=image

1 docker search jdk

拉取镜像,利用pull命令。

1 用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
2 docker pull jboss/base-jdk:8

docker辅助器 docker --help_docker辅助器_02

 

 

 查看已下载镜像列表,利用images命令

1 docker images

镜像拷贝,同时重命名,利用tag命令

1 # 比如,想创建拷贝一个镜像`hello-wrold`,同时命名为`lqdev.cn/hello-world:1`
2 docker tag hello-world lqdev.cn/hello-world:1

此时查看镜像列表,就会发现多了一个镜像了:

1 [root@xx ~]# docker images
2 REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
3 hello-world            latest              2cb0d9787c4d        2 weeks ago         1.85kB
4 lqdev.cn/hello-world   1                   2cb0d9787c4d        2 weeks ago         1.85kB

基于Dockerfile创建一个新的镜像,利用build命令

1 # 使用当前目录下的Dockerfile,同时镜像命名(`-t`,指tag)为:lqdev.cn/first:1
2 docker build -t lqdev.cn/first:1

删除镜像,利用rmi命令(这里需要注意,当镜像有容器在使用时,是无法删除的,需要先删除容器再来删除镜像。)

1 docker rmi jboss/base-jdk:8
2 或者根据images_id删除
3 docker rmi b123d943e165

三、容器常用命令

运行容器,利用run命令。

1 docker run hello-world

运行命令是最常用的命令了,这里其常用选项进行列举说明下

1 -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
 2 -d: 后台运行容器,并返回容器ID;
 3 -i: 以交互模式运行容器,通常与 -t 同时使用;
 4 -p: 端口映射,格式为:主机(宿主)端口:容器端口
 5 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
 6 --name="nginx-lb": 为容器指定一个名称;
 7 --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
 8 --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
 9 -h "mars": 指定容器的hostname;
10 -e username="ritchie": 设置环境变量;
11 --env-file=[]: 从指定文件读入环境变量;
12 --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
13 -m :设置容器使用内存最大值;
14 --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
15 --link=[]: 添加链接到另一个容器;
16 --expose=[]: 开放一个端口或一组端口;
17 --privileged:使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。

容器列表,使用ps命令,可以列举出当前运行的容器,需要所有容器时,加入-a选项即可。

1 docker ps -a

停止容器,利用stop命令。

# docker stop 容器id或容器名
docker stop 3ba5b7475423

启动已停止容器,利用start命令。

1 # docker start 容器id或容器名
2   docker start 3ba5b7475423

重启容器,利用restart命令。

# docker restart 容器id或容器名
docker restart 3ba5b7475423

强制停止容器,利用kill命令。

1 # docker kill 容器id或容器名
2 docker kill 3ba5b7475423

删除容器,利用rm命令(只能删除已经停止的容器,若需要删除正在运行的容器,可加入-f参数选项)

# docker rm 容器ID或容器名
docker rm 3ba5b7475423

进入容器,在一些场景下,比如想查看redis的客户端redis-cli时,这个时候就需要进入容器了。进入容器有很多中,这里就exec进行讲解下,其他的比如attach不熟悉,大家可自行搜索下。

1 # docker exec -it 容器ID或容器名 参数
2  docker exec -it 3ba5b7475423 redis-cli  
3  参数说明:
4 -d:分离模式: 在后台运行    
5 -i:即使没有附加也保持STDIN 打开
6 -t:分配一个伪终端

容器中创建一个镜像。在制作一些私有镜像时,常常是依赖于一个基础镜像后,然后进入容器中进行相关系统环境的配置,或者相应的优化。但若容器一删除,之前的修改都会没有了。故在这些场景下,可直接从修改后的容器中创建一个自己的私有镜像,这样里面的一些环境和相关优化项还是保留的。这个主要会在构建私有镜像章节时具体展开。

1 # docker commit [options] 容器id name:tag
2  docker commit 3ba5b7475423 lqdev.cn/redis:1
3  参数说明:
4 -a:提交的镜像作者
5 -c:使用Dockerfile指令来创建镜像
6 -m:提交时的说明文字
7 -p:在commit时,将容器暂停

四、其他常用命令

查看日志,利用logs命令。

1  # docker logs [OPTIONS] 容器ID
2   docker logs -f 3ba5b7475423
3   参数说明:
4  -f : 跟踪日志输出
5 --since :显示某个开始时间的所有日志
6  -t : 显示时间戳
7 --tail :仅列出最新N条容器日志

宿主和容器之间相互拷贝文件,利用cp命令。

1 # docker cp 容器名:要拷贝的文件在容器里面的路径  要拷贝到宿主机的相应路径
2 # docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
3 docker cp 3ba5b7475423:/opt/a.json /opt
4 docker cp /opt/a.json 3ba5b7475423:/opt

 

参考资料:https://blog.lqdev.cn/2018/07/31/docker/docker-three/