docker的常用操作

一、镜像的操作:

1、在仓库搜索镜像:docker search [OPTIONS] IMAGE

1
2
3
4
5
6
7
8
#搜索镜像
[root@server ~]$ docker search ubuntu
#搜索大于30颗star的镜像
[root@server ~]$ docker search --filter stars=30 ubuntu
#搜索自动化构建的镜像
[root@server ~]$ docker search --filter is-automated=true ubuntu
#搜索官方且大于30颗star的镜像
[root@server ~]$ docker search --filter is-official=true --filter stars=30 ubuntu

2、从仓库拉取镜像:docker pull IMAGE[:TAG]

1
[root@server ~]$ docker pull ubuntu:18.04

3、查看本地镜像:

1
[root@server ~]$ docker images

3、删除镜像:docker rmi [OPTIONS] IMAGE ID or REPOSITORY [IMAGE…]

1
2
3
4
#删除名为ubuntu的镜像
[root@server ~]$ docker rmi ubuntu
#删除IMAGE ID为6ccafaf180fc的镜像
[root@server ~]$ docker rmi 6ccafaf180fc

二、容器的操作:

1、创建容器:docker create [OPTIONS] IMAGE [COMMAND] [ARG…]

1
[root@server ~]$ docker create -v /home/docker:/docker --name docker ubuntu:18.04

2、创建并启动容器:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

docker run命令是docker create命令和docker start命令的合成,常用参数有:

-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用;
-p 端口映射,格式为:主机(宿主)端口:容器端口;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-v 绑定数据卷;
–name 为容器指定一个名称;

1
[root@server ~]$ docker run -p 80:80 -v ./nginx-html:/usr/share/nginx/html -d --name nginx nginx:latest

上面命令含义为:使用镜像nginx:latest,以后台模式启动一个容器,将容器的80端口映射到主机的80端口,将容器的/usr/share/nginx/html目录映射到主机目录下的docker中的nginx-html数据卷中,并取名为nginx。

3、查看已创建的运行中的容器:

1
[root@server ~]$ docker ps

4、查看已创建的所有容器(包括未运行的):

1
[root@server ~]$ docker ps -a

5、启动/停止/重启容器:docker start/stop/restart

1
2
3
4
5
6
#启动CONTAINER ID为97f1d3fc38c0的容器
[root@server ~]$ docker start 97f1d3fc38c0
#停止容器名为ubuntu的容器
[root@server ~]$ docker stop ubuntu
#重启CONTAINER ID为97f1d3fc38c0的容器
[root@server ~]$ docker restart 97f1d3fc38c0

6、删除容器:docker rm [OPTIONS] CONTAINER ID or NAMES [CONTAINER…]

1
2
3
4
#删除CONTAINER ID为97f1d3fc38c0的容器
[root@server ~]$ docker rm 97f1d3fc38c0
#删除名为ubuntu的容器
[root@server ~]$ docker rm ubuntu

三、容器的修改和保存

1、进入到正在运行的容器:docker exec [OPTIONS] CONTAINER ID or NAMES COMMAND [ARG…]

1
2
3
4
#进入容器名为nginx的容器
[root@server ~]$ docker exec -it nginx /bin/bash
#进入CONTAINER ID为9556bb3c24ea的容器
[root@server ~]$ docker exec -it 9556bb3c24ea /bin/bash

2、退出容器:

1
[root@server ~]$ exit

3、将修改后的容器进行提交:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

主要参数:

–author, -a 作者(如: “zhangsan test@mail.com”)
–change, -c 将Dockerfile指令应用于创建的镜像
–message, -m 提交的信息
–pause, -p 提交期间暂停容器

1
[root@server ~]$ docker commit -a "zhangsan" -m "first commit" c3f279d17e0a ubuntu:latest

四、宿主主机与容器之间的文件传输

1、将容器中的文件拷贝到宿主主机:docker cp [OPTIONS] CONTAINER[ID or NAMES]:SRC_PATH DEST_PATH

1
2
#将容器名为php的/data目录中的文件拷贝到宿主主机的/home/test
[root@server ~]$ docker cp php:/data /home/test

2、将宿主主机中的文件拷贝到容器中:docker cp [OPTIONS] SRC_PATH| CONTAINER[ID or NAMES]:DEST_PATH

1
2
#将宿主主机/home/test文件拷贝到容器ID为a175b4a2fd94的/data目录中
[root@server ~]$ docker cp /home/test a175b4a2fd94:/data

五、端口映射

将宿主主机端口映射到容器端口,解决客户端发过来的请求与容器间的交互。

1、创建容器时,通过“-p”参数进行端口映射:

docker run -itd -p 宿主机端口号:容器端口号

1
[root@server ~]$ docker run -itd --name nginx -p 80:80 -p 443:443 nginx

2、查看端口映射:docker port CONTAINER ID or NAMES

1
[root@server ~]$ docker port nginx

六、文件挂载

将宿主主机的文件挂载到容器里面,在本地修改文件后,容器里的文件也会进行同步,解决宿主机与容器之间的交互,需要频繁进行文件修改的话,进行文件挂载是个不错选择。文件挂载可以创建容器时通过“-v ”或“–volume”进行指定。

具体形式为:

docker run -itd -v /宿主主机/文件目录/文件名:/容器/目录/文件名
docker run -itd -v /宿主主机/文件目录:/容器/目录

例如:

1
[root@server ~]$ docker run -itd --name nginx -p 80:80 -v /data/web:/usr/share/nginx/html nginx

七、信息查询

1、查看docker的系统使用信息:docker info [OPTIONS]

1
[root@server ~]$ docker info

2、查看docker的版本信息:docker version [OPTIONS]

1
[root@server ~]$ docker version

3、查看容器/镜像的元数据:docker inspect [OPTIONS] NAME|ID [NAME|ID…]

1
[root@server ~]$ docker inspect 9632e541ba2f

八、Docker的磁盘管理

对docker磁盘进行管理,如prune命令的使用,如何删除未使用的镜像和未使用的容器等操作,可以具体查看《docker的磁盘管理以及清理》。