容器⽣命周期管理
1.docker run
创建⼀个新的容器并运⾏⼀个命令
docker run [options] image [command] [arg...]
-a stdin:指定标准输⼊输出内容类型,可选STDIN/STDOUT/STDERR-d: 后台运⾏容器,并返回容器ID-i: 以交互式运⾏容器,通常与-t同时使⽤-p: 端⼝映射,格式为 主机(宿主)端⼝:容器端⼝-t: 为容器重新分配⼀个伪输⼊终端,通常与-i同时使⽤--name=\"name\": 为容器指定⼀个名称
--dns 8.8.8.8: 为容器指定⼀个dns服务器,默认与宿主⼀致--dns-search domain:为容器指定⼀个DNS域名,默认与宿主⼀致-h \"hostname\": 指定容器的hostname-e arg=\"value\": 设置环境变量-env-file=[]:从指定⽂件读⼊环境变量
--cpuset=\"0-2\" or --cpuset=\"0,1,2\": 绑定容器到指定的cpu运⾏-m: 设置容器使⽤内存最⼤值
--net=\"bridge\": 指定容器的⽹络连接类型,⽀持bridge/host/none/container四种类型--link=[]:添加链接到另外⼀个容器
--expose=[]:开放⼀个端⼝或⼀组端⼝,宿主机使⽤随机端⼝映射到开放的端⼝#实例
docker run --name mynginx -d nginx:latest
# 映射多个端⼝
docker run -p 80:80/tcp -p 90:90 -v /data:/data -d nginx:latestdocker run -p 127.0.0.1:80:8080/tcp ubuntu bashdocker run -it nginx:latest /bin/bash
2.start/stop/restart命令
启动/关闭/重启容器
docker start/stop/restart [options] container [container...]
3.kill命令
杀掉⼀个运⾏中的容器
-s:向容器发送⼀个信号docker kill -s KILL mynginx 4.rm命令
删除⼀个或多个容器
-f:通过SIGKILL信号强制删除⼀个运⾏中的容器-l:移除容器间的⽹络连接,⽽⾮容器本⾝-v:-v删除与容器关联的卷docker rm -f db01 db02docker rm -l db
docker rm -v nginx01
5.pause/unpause命令
pause暂停,unpause恢复
docker pause [OPTIONS] CONTAINER [CONTAINER...]docker unpause [OPTIONS] CONTAINER [CONTAINER...]
6.create命令
创建⼀个容器,但不启动它(⽤法类似docker run)
docker create --name mynginx nginx:latest
7.exec命令
docker exec:在运⾏的容器中执⾏命令
-d:分离模式:在后台运⾏
-i:及时没有附加也保持STDIN打开-t:分配⼀个伪终端
docker exec -it mynginx /bin/bash /root/secript.sh
docker exec -i -t mynginx /bin/bash # 使⽤该命令可以分配⼀个伪终端执⾏命令, 使⽤exit推出时,docker容器不会⾃动关闭
容器操作
1.PS列出容器
-a: 显⽰所有容器,包括未运⾏的-f: 根据条件过滤显⽰的内容--format: 指定返回值的模板⽂件-l: 显⽰最近创建的容器-n: 列出最近创建的n个容器--no-trunc: 不截断输出
-q: 静默模式,值显⽰容器编号-s: 显⽰总⽂件⼤⼩docker ps
docker ps -n 5docker ps -a -q
2.inspect
获取容器/镜像的元数据
-f: 指定返回值的模板-s: 显⽰总的⽂件⼤⼩
--type: 为指定类型返回JSONdocker inspect mysql:5.6
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql
3.top
查看容器中运⾏的进⾏信息,⽀持ps命令参数
docker top [options] container [ps options]docker top mymysql 4.attach
连接到运⾏中的容器
docker attach [options] container
# --sig-proxy=false 加上参数容器还是会退出(通过ctrl+D退出容器)docker attach --sig-proxy=false mynginx 5.events
从服务器获取实时时间(监听)
-f: 根据条件过滤事件
--since:从指定的时间戳后显⽰所有事件--until:流⽔时间显⽰到指定的时间为⽌如果不加任何参数,监听当前事件docker events 6.logs
获取容器的⽇志(容器中输出到STDOUT,STDERR中的⽇志)
-f: 跟踪⽇志输出
--since: 显⽰某个时间开始的所有⽇志-t: 显⽰时间戳
--tail: 仅列出最新n条容器⽇志docker logs -f mynginx 7.wait
阻塞运⾏直到容器停⽌,然后打印它的退出代码
docker wait container 8.export
将容器的⽂件系统作为⼀个tar归档⽂件导出到stdout
docker export -o mysql-`data +%Y%m%d`.tar a404c6c174a2 9.port
列出指定的容器的端⼝映射或者查找将PRIVATE_PORT NAT到⾯向公众的端⼝
docker port mysql
10.update
更新容器的⼀些配置(内存,cpu,是否⾃动启动), 修改内存时,虚拟机必须是关机状态,否则报错 未知参数
root@bogon:~# docker update --help
Usage: docker update [OPTIONS] CONTAINER [CONTAINER...]Update configuration of one or more containers
Options:
--blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota --cpu-rt-period int Limit the CPU real-time period in microseconds --cpu-rt-runtime int Limit the CPU real-time runtime in microseconds -c, --cpu-shares int CPU shares (relative weight) --cpus decimal Number of CPUs
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1) --kernel-memory bytes Kernel memory limit -m, --memory bytes Memory limit
--memory-reservation bytes Memory soft limit
--memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap --restart string Restart policy to apply when a container exits
root@bogon:~# docker update --memory-swap 10240000 -m 10240000 portainer
容器rootfs命令
1.commit
从容器创建⼀个新的镜像
-a: 提交的镜像作者
-c: 使⽤dockerfile指令来创建镜像-m: 提交时的说明⽂字-p: 在提交时,将容器暂停
docker commit -a \"runoob.com\" -m \"my apache\" a404c6c174a2 myapache:v1 2.cp
⽤于容器和主机之间的数据拷贝
docker cp [options] container:src_path dest_pathdocker cp [options] src_path container:dest_pathdocker cp /www/runoob 96f7f14e99ab:/www/docker cp 96f7f14e99ab:/www/ /www/runoob 3.diff
检查容器⾥⽂件结构的修改
docker diff [options] containerdocker diff mymysql
镜像仓库
1.login/logout
登陆docker hub公共仓库(需要⾃⼰去注册)
docker login [options] [server]docker logout [options] [server]-u: 登陆的⽤户名-p: 登陆的密码
2.pull
从镜像仓库中拉取或更新指定镜像
docker pull [options] name[:tag|@DIGEST]-a: 拉取所有tagged镜像
--disable-content-trust: 忽略镜像的校验,默认开启# 下载最新版java镜像docker pull java 3.push
将本地镜像上传到镜像仓库,要先登陆到镜像仓库
docker push [options] name[:tag]
--disable-content-trust: 忽略镜像的校验,默认开启docker push myapache:v1 4.search
在docker hub查找镜像
docker search [options] term
--automated: 只列出automated build类型的镜像--no-trunc: 显⽰完整的镜像描述-s: 列出收藏数⼩于指定值的镜像
docker search -s 10 java
本地镜像管理
1.images
列出本地镜像
docker images [options] [repository:tag]
-a: 列出本地所有镜像(含中间映像层,默认过滤中间映像层)--digests: 显⽰镜像的摘要信息(MD5值)-f: 显⽰满⾜条件的镜像
--format: 指定返回值的模版⽂件--no-trunc: 显⽰完整的镜像信息-q: 只显⽰镜像IDdocker imagesdocker images ubuntu 2.rmi
删除本地⼀个或多个镜像
-f:强制删除
--no-prune: 不移除该镜像的过程进⾏,默认移除docker rmi -f runoob/ubuntu:v4 3.tag
标记本地镜像,将其归⼊某⼀个仓库
# 把镜像ubuntu:15.10标记为runoob/ubuntu:v3docker tag ubuntu:15.10 runoob/ubuntu:v3 4.build
⽤于使⽤dockerfile创建镜像(后⾯会讲解到)
docker build [options] path | url | - 5.history
查看指定镜像的创建历史
docker history [options] image
-H: 以可读的格式打印镜像⼤⼩和⽇期,默认为true--no-trunc: 显⽰完整的提交记录-q: 仅列出提交记录ID 6.save
将指定镜像保存成tar归档⽂件
docker save [options] image [image ...]-o: 输出⽂件
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3 7.import
从归档⽂件中创建镜像
docker import [options] file |URL |- [repository:tag]docker import my_ubuntu_v3.tar runoob/ubuntu:v4
info/version
1.info
显⽰docker系统信息,包括镜像和容器数
docker info [options]docker info
2.version
显⽰docker版本信息
docker version [options]-f: 指定返回值的模板⽂件docker version
其他stats
查看每个运⾏的docker容器的状态
docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS9c5e0e259466 test02 0.02% 12.46MiB / 100MiB 12.46% 1.3kB / 0B 19.2MB / 16.4kB 2d5183228b334 test01 0.02% 12.55MiB / 100MiB 12.55% 1.04kB / 0B 7.59MB / 16.4kB 2
因篇幅问题不能全部显示,请点此查看更多更全内容