1、容器生命周期管理篇html
1.Docker run 命令mysql
(1)语法nginx
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
(2)OPTIONS说明sql
(3)实例docker
使用docker镜像nginx:latest之后台模式启动一个容器,并将容器命名为mynginx数据库
docker run --name mynginx -d nginx:latest
使用镜像nginx:latest之后台模式启动一个容器,并将容器的80端口映射到主机随机端口apache
docker run -P -d nginx:latest
使用镜像nginx:latest之后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/databash
docker run -p 80:80 -v /data:/data -d nginx:latest
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令服务器
$ docker run -it nginx:latest /bin/bash root@b8573233d675:/#
2.Docker start/stop/restart 命令网络
(1)语法
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
(2)OPTIONS说明
(3)实例
启动已被中止的容器myapp
docker start myapp
中止运行中的容器myapp
docker stop myapp
重启容器myapp
docker restart myapp
3.Docker kill 命令
(1)语法
docker kill [OPTIONS] CONTAINER [CONTAINER...]
(2)OPTIONS说明
(3)实例
杀掉运行中的容器myapp
$ docker kill -s KILL myapp myapp
4.Docker rm 命令
(1)语法
docker rm [OPTIONS] CONTAINER [CONTAINER...]
(2)OPTIONS说明
(3)实例
强制删除容器app一、app2
docker rm -f app一、app2
移除容器app1对容器app2的链接,链接名conn
docker rm -l conn
删除容器app1,并删除容器挂载的数据卷
docker rm -v app1
删除全部容器
docker rm $(docker ps -a -q)
5.Docker pause/unpause 命令
(1)语法
docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker unpause [OPTIONS] CONTAINER [CONTAINER...]
(2)OPTIONS说明
(3)实例
暂停数据库容器db01提供服务
docker pause db01
恢复数据库容器db01提供服务
docker unpause db01
6.Docker create 命令
(1)语法 ,语法同docker run
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
(2)OPTIONS说明
(3)实例
使用docker镜像nginx:latest建立一个容器,并将容器命名为myapp
$ docker create --name myapp nginx:latest 87b95664c2f75b7b69f56d56a9cfc48ceb50a48a9db7652ee4c27e3e2cb1961f
7.Docker exec 命令
(1)语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
(2)OPTIONS说明
(3)实例
在容器myapp中以交互模式执行容器内/root/abxiao.sh脚本
$ docker exec -it myapp /bin/sh /root/abxiao.sh http://www.aibinxiao.com/
在容器myapp中开启一个交互模式的终端
$ docker exec -i -t mynginx bash root@b1a0703e41e7:/#
2、容器操做命令篇
1.Docker ps 命令
(1)语法
docker ps [OPTIONS]
(2)OPTIONS说明
(3)实例
列出全部在运行的容器信息
$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS NAMES 09b93464c2f7 nginx:latest "nginx -g 'daemon off" ... 80/tcp, 443/tcp mynginx 96f7f14e99ab mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql
列出最近建立的5个容器信息
$ docker ps -n 5 CONTAINER ID IMAGE COMMAND CREATED 09b93464c2f7 nginx:latest "nginx -g 'daemon off" 2 days ago ... b8573233d675 nginx:latest "/bin/bash" 2 days ago ... b1a0703e41e7 nginx:latest "nginx -g 'daemon off" 2 days ago ... f46fb1dec520 5c6e1090e771 "/bin/sh -c 'set -x \t" 2 days ago ... a63b4a5597de 860c279d2fec "bash" 2 days ago ...
列出全部建立的容器ID
$ docker ps -a -q 09b93464c2f7 b8573233d675 b1a0703e41e7 f46fb1dec520 a63b4a5597de 6a4aa42e947b de7bb36e7968 43a432b73776 664a8ab1a585 ba52eb632bbd ......
2.Docker inspect 命令
(1)语法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
(2)OPTIONS说明
(3)实例
获取镜像mysql:5.6的元信息
$ docker inspect mysql:5.6 [ { "Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec", "RepoTags": [ "mysql:5.6" ], "RepoDigests": [], "Parent": "", "Comment": "", "Created": "2016-05-24T04:01:41.168371815Z", "Container": "e0924bc460ff97787f34610115e9363e6363b30b8efa406e28eb495ab199ca54", "ContainerConfig": { "Hostname": "b0cf605c7757", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "3306/tcp": {} }, ...
获取正在运行的容器mymysql的 IP
$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql 192.168.1.36
3.Docker top 命令
(1)语法
容器运行时不必定有/bin/bash终端来交互执行top命令,并且容器还不必定有top命令,可使用docker top来实现查看container中正在运行的进程。
docker top [OPTIONS] CONTAINER [ps OPTIONS]
(2)OPTIONS说明
(3)实例
查看容器mymysql的进程信息
$ docker top mymysql UID PID PPID C STIME TTY TIME CMD 999 40347 40331 18 00:58 ? 00:00:02 mysqld
查看全部运行容器的进程信息
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
4.Docker attach 命令
(1)语法
要attach上去的容器必须正在运行,能够同时链接上同一个container来共享屏幕(与screen命令的attach相似)。官方文档中说attach后能够经过CTRL-C来detach,但实际上通过个人测试,若是container当前在运行bash,CTRL-C天然是当前行的输入,没有退出;若是container当前正在前台运行进程,如输出nginx的access.log日志,CTRL-C不只会致使退出容器,并且还stop了。这不是咱们想要的,detach的意思按理应该是脱离容器终端,但容器依然运行。好在attach是能够带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。
docker attach [OPTIONS] CONTAINER
(2)OPTIONS说明
(3)实例
容器mynginx将访问日志指到标准输出,链接到容器查看访问信息
$ docker attach --sig-proxy=false mynginx 192.168.239.1 - - [10/Jul/2016:16:54:26 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
5.Docker events 命令
(1)语法
docker events [OPTIONS]
(2)OPTIONS说明
(3)实例
显示docker 2017年10月1往后的全部事件
$ docker events --since="1467302400" 2016-07-08T19:44:54.501277677+08:00 network connect 66f958fd13dc4314ad20034e576d5c5eba72e0849dcc38ad9e8436314a4149d4 (container=b8573233d675705df8c89796a2c2687cd8e36e03646457a15fb51022db440e64, name=bridge, type=bridge) 2016-07-08T19:44:54.723876221+08:00 container start b8573233d675705df8c89796a2c2687cd8e36e03646457a15fb51022db440e64 (image=nginx:latest, name=elegant_albattani) 2016-07-08T19:44:54.726110498+08:00 container resize b8573233d675705df8c89796a2c2687cd8e36e03646457a15fb51022db440e64 (height=39, image=nginx:latest, name=elegant_albattani, width=167) 2016-07-08T19:46:22.137250899+08:00 container die b8573233d675705df8c89796a2c2687cd8e36e03646457a15fb51022db440e64 (exitCode=0, image=nginx:latest, name=elegant_albattani) ...
6.Docker logs 命令
(1)语法
docker logs [OPTIONS] CONTAINER
(2)OPTIONS说明
(3)实例
跟踪查看容器mynginx的日志输出
$ docker logs -f mynginx 192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-" 2016/07/10 16:53:33 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.239.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.239.130", referrer: "http://192.168.239.130/" 192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.239.130/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-" 192.168.239.1 - - [10/Jul/2016:16:53:59 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-" ...
7.Docker wait 命令
(1)语法
docker wait [OPTIONS] CONTAINER [CONTAINER...]
(2)OPTIONS说明
(3)实例
docker wait CONTAINER
8.Docker export 命令
(1)语法
docker export [OPTIONS] CONTAINER
(2)OPTIONS说明
(3)实例
将id为a404c6c174a2的容器按日期保存为tar文件
$ docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2 $ ls mysql-`date +%Y%m%d`.tar mysql-20171107.tar
9.Docker port 命令
(1)语法
docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
(2)OPTIONS说明
(3)实例
查看容器mynginx的端口映射状况
$ docker port mymysql 3306/tcp -> 0.0.0.0:3306
3、容器rootfs命令篇
1.Docker commit 命令
(1)语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
(2)OPTIONS说明
(3)实例
将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息
$ docker commit -a "aibinxiao.com" -m "my apache" a404c6c174a2 mymysql:v1 sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057 $ docker images mymysql:v1 REPOSITORY TAG IMAGE ID CREATED SIZE mymysql v1 37af1236adef 15 seconds ago 329 MB
2.Docker cp 命令
(1)语法
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
(2)OPTIONS说明
(3)实例
将主机/www/aibinxiao目录拷贝到容器96f7f14e99ab的/www目录下
docker cp /www/aibinxiao 96f7f14e99ab:/www/
将主机/www/aibinxiao目录拷贝到容器96f7f14e99ab中,目录重命名为www
docker cp /www/aibinxiao 96f7f14e99ab:/www
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中
docker cp 96f7f14e99ab:/www /tmp/
3.Docker diff 命令
(1)语法
docker diff [OPTIONS] CONTAINER
(2)OPTIONS说明
(3)实例
查看容器mymysql的文件结构更改
$ docker diff mymysql A /logs A /mysql_data C /run C /run/mysqld A /run/mysqld/mysqld.pid A /run/mysqld/mysqld.sock C /tmp
本文为原创文章,若是对你有一点点的帮助,别忘了点赞哦!比心!如需转载,请注明出处,谢谢!