本文最后更新于:2024年7月6日 早上
容器相关指令
docker 命令采用了分组管理的思想,已经纳入管理的docker命令如下(版本18.09.2):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Management Commands: builder Manage builds config Manage Docker configs container Manage containers engine Manage the docker engine image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes
其中docker container 则是管理容器命令,老的版本中是使用docker进行容器管理,新版本兼容老版本docker命令,所以对容器管理既可用docker也可以用docker container。(一般示例代码汇总都是直接使用docker指令)
1.启动容器 1 docker run [OPTIONS] IMAGE [COMMAND][ARG…]
常用OPTIONS:
-i: –interactive,交互式启动
-t: –tty,分配终端
-v: –volume,挂在数据卷
-d: –detach,后台运行
–name: 容器名字
–network: 指定网络
–rm: 容器停止自动删除容器
-P: 自动暴露所有容器内端口,宿主随机分配端口
-p: 指定端口映射,将容器内服务的端口映射到宿主机的指定端口,可以使用多个-p
可以使用如下三种方式:
<container port>
:随机分配宿主机的一个端口作为映射端口
<hostport>:<container port>
:指明主机的端口映射为容器端口
<hostip>:<hostport>:<container port>
:指定主机ip和端口
示例:运行一个名字为nginx-container的容器,使用镜像nginx,并将宿主机的8080映射到容器内部80端口,然后进入交互模式。
1 2 3 [root@app51 ~]# docker run -it --name nginx-container -p 8080 :80 nginx /bin/bash root@fd92290433da:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
2.查看容器
常用选项:
-a:–all ,查看所有容器,包括退出和其他状态的
-n::–last int,显示最后n个创建的容器
-l, :–latest ,显示最近的容器
示例 :
1 2 3 4 5 6 7 8 root@app51 ~] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4d 51a1cdf4b4 busybox "/bin/sh" 11 seconds ago Up 9 seconds busybox383f 31ff8f01 nginx "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 0.0 .0.0 :8080 ->80 /tcp nginx-container [root@app51 ~] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4d 51a1cdf4b4 busybox "/bin/sh" 41 seconds ago Up 39 seconds busybox [root@app51 ~]
3.查看容器具体信息 1 docker inspect [OPTIONS ] NAME |ID [NAME |ID…]
示例:
1 2 3 4 5 6 7 [root@app51 ~]# docker inspect busybox [ { "Id" : "4d51a1cdf4b4e06831faa6e54a32f1f8eb544e349028083b12f5b3f87af075c9" , "Created" : "2019-02-23T09:10:20.907074902Z" , "Path" : "/bin/sh" , "Args" : [],
4.停止容器 方式一:docker stop [OPTIONS] CONTAINER [CONTAINER…]
方式二: docker kill [OPTIONS] CONTAINER [CONTAINER…]
区别:docker stop 相当于发送15停止信号,而kill是强制终止对应信号9
示例:
1 2 [root@app51 ~] nginx-container
5.启动已停止的容器
常用选项:
-a:–attach 附加终端
-I:–interactive 交互式
1 2 3 4 5 6 7 [root@app51 ~]# docker start -ia busybox / # ls bin dev etc home proc root sys tmp usr var / # ps PID USER TIME COMMAND 1 root 0:00 /bin/sh 7 root 0:00 ps
6.删除容器 1 2 3 docker rm CONTAINER 或者 docker container rm
如果删除的容器正在运行则需要指定-f进行强制删除
常用选项:
示例:
1 docker rm nginx-container
Ps:删除所有容器
1 2 docker rm -f `docker ps -a -q ` docker ps -a |awk -F ' ' '{print $1}' |xargs docker rm -f
7. 暂停某个容器 1 docker pause CONTAINER [CONTAINER…]
示例:
1 2 [root@app51 ~]# docker pause nginx-container nginx-container
8.恢复暂停的容器 1 docker unpause CONTAINER
示例
1 2 [root@app51 ~]# docker pause nginx-container nginx-container
9.查看容器日志 docker logs [OPTIONS] CONTAINER
常用选项:
1 2 root@app51 ~]# docker logs nginx-container 10 .1 .201 .30 - - [23/Feb/2019:10:55:33 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36" "-"
10.在已运行的容器中运行命令 1 docker exec CONTAINER COMMAND
常用选项:
-d:–detach ,后台运行命令
-e, –env list 设置env
-i, –interactive 启用交互式
-t, –tty 启用终端
-u, –user string 指定用户 (格式: <name|uid>[:<group|gid>])
-w, –workdir string 指定工作目录
示例:
1 2 3 4 [root@app51 ~]# docker exec -it -u nginx nginx-container /bin/sh $ iduid =101(nginx) gid =101(nginx) groups =101(nginx) $
11.容器导出 1 docker export [OPTIONS] CONTAINER
容器导出类似于容器快照,导出的是容器的在宿主机上的文件系统压缩包,导出的文件系统可使用docker import进行导入,在其他机器导入时候会以镜像的方式存在。
常用参数
示例 :
1 2 3 [root@app51 ~] [root@app51 ~] -rw------- 1 root root 107 M 2 月 23 19 :18 ningx.tar
12.将导出的容器导入为镜像 1 docker import [OPTIONS ] file |URL|- [REPOSITORY[:TAG]]
容器导入可以是文件、文件url、镜像仓库
示例:
1 2 3 4 5 6 7 8 [root@app51 ~] sha256:fd4931710d35765edb9bbd0ea84a886e0901aa7a2de03ab2eefd9aedea0e8646 [root@app51 ~] REPOSITORY TAG IMAGE ID CREATED SIZE nginx v154 fd4931710d35 10 seconds ago 108MB<none> <none> 940cdf68f69d 7 minutes ago 108MB busybox latest d8233ab899d4 8 days ago 1.2MB nginx latest f09fe80eb0e7 2 weeks ago 109MB
其他导入示例
13.将容器提交为镜像
常用选项:
-a,–author 指定作者
-m, –message 本次提交的信息
-p, –pause 提交为镜像时候暂停容器
-c, –change list 修改镜像某些属性,列如启动命令
示例:
1 2 3 4 5 6 [root@app51 ~]# docker commit -p -m 'build nginx image' nginx-container nginx:test sha256 :6 c 68885804 ca69970 d747 cc 6 cc 8050 ed7 a1 b6 c 24838695 ec11 b18348318809 a6 [root@app51 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx test 6 c 68885804 ca 6 seconds ago 109 MB nginx v154 fd4931710 d35 2 hours ago 108 MB
镜像相关指令 在老版本中镜像操作也是使用的docker命令,新版本进行了分组,可使用docker image 来进行镜像操作。
1.搜索镜像 1 docker search [OPTIONS ] TERM
常用选项:
–limit 限制搜索的结果条目数量,默认显示25条
1 2 3 4 5 6 [root@app51 ~] NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 5179 [OK] ansible/centos7-ansible Ansible on Centos7 120 [OK] jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5 .1804 x86… 106 [OK] consol/centos-xfce-vnc Centos container with "headless" VNC session… 80 [OK]
结果字段含义:
NAME:镜像名称
DESCRIPTION :镜像描述
STARS :获赞数量
OFFICIAL :是否为官方镜像
AUTOMATED:是否为自动构建
2.下载镜像 1 docker image pull <IMAGE_NAME >:<TAG> 或者docker pull
TAG不写默认为最新版本latest
1 2 3 4 5 6 [root@app51 ~]# docker pull centosUsing default tag: latestlatest: Pulling from library/centosa02a4930cb5d: Pull completeDigest: sha256:184e5f 35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426Status: Downloaded newer image for centos:latest
3.查看镜像 1 2 3 docker image ls 或者 docker images
常用选项:
-a: 查看所有已下载的镜像
-f: –filter,过滤某些镜像
1 2 3 [root@app51 ~] REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 1 e1148e4cc2c 2 months ago 202M B
4.删除镜像 1 docker image rm [OPTIONS] IMAGE [IMAGE...] 或者docker rmi IMAGE
示例代码:
1 2 3 4 5 [root@app51 ~]# docker image rm centos Untagged: centos:latest Untagged: centos@sha256 :184e5 f35598e333 bfa7 de10 d8 fb1 cebb5 ee4 df5 bc0 f970 bf2 b1e7 c 7345136426 Deleted: sha256 :1e1148 e4 cc 2 c 148 c 6890 a18e3 b2 d2 dde41 a6745 ceb4e5 fe94 a923 d811 bf82 ddb Deleted: sha256 :071 d8 bd765171080 d01682844524 be57 ac9883e53079 b6 ac66707e192 ea25956
5. 镜像导出 1 docker save [OPTIONS] IMAGE [IMAGE...]
将镜像打包为压缩包,可在其他docker主机进行导入,一次可打包多个
常用选项:
示例:
1 [root@app51 ~]# docker save -o nginx-bus.tar.gz busybox:latest nginx:latest
6.镜像导入
将已经导出的镜像压缩文件导入为镜像
常用选项:
1 2 3 [root@app51 ~]# docker load -i nginx-bus.tar.gz Loaded image: nginx:latest Loaded image: busybox:latest
7.查看镜像信息 1 docker image inspect [OPTIONS] IMAGE [IMAGE...]
示例代码:
1 2 3 4 5 6 7 8 9 10 [root@app51 ~] [ { "Id" : "sha256:f09fe80eb0e75e97b04b9dfb065ac3fda37a8fac0161f42fca1e6fe4d0977c80" , "RepoTags" : [ "nginx:latest" ], "RepoDigests" : [ "nginx@sha256:dd2d0ac3fff2f007d99e033b64854be0941e19a2ad51f174d9240dda20d9f534" ],
其他 运行信息查看docker info
1 2 3 4 5 6 7 8 9 10 11 [root@app51 ~ ]Containers: 1 Running: 1 Paused: 0 Stopped: 0 Images: 4 Server Version: 18.09 .2 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true
版本信息查看 docker version
1 2 3 4 5 6 7 8 9 root @app51 ~]# docker versionClient :Version : 18 .09 .2 API version: 1 .39 Go version: go1.10 .6 Git commit: 6247962 Built : Sun Feb 10 04 :13 :27 2019 OS /Arch: linux/amd64Experimental : false