赞
踩
作用:登陆镜像仓库
语法
# docker login | loginout [-u xxx -p 密码 ]
默认Docker Hub
作用:拉取镜像
语法
# docker pull 镜像名[:标签]
-a 拉取所有tagged镜像
–disable-content-trust,忽略镜像校验,默认校验
下载java最新镜像
# docker pull java
下载java所有镜像
# docker pull -a java
作用:上传镜像
语法
# docker push 参数 镜像名:[标签]
–disable-content-trust,忽略镜像校验,默认校验
# docker push myapache:v1
作用:查找镜像
语法
# docker search 服务名
–automated:只列出自动化安装的镜像
–no-trunc:显示完整镜像描述
-s:列出收藏数不小于某值的镜像
# docker search -s 10 java
# docker images
-a,列出本地所有镜像(不加过滤掉中间层镜像)
-f,显示满足条件的镜像
–format,指定返回值的模板文件
-q,只显示镜像ID
# docker images # docker images httpd
# docker rmi 镜像名:标记
# docker rmi 唯一标识(不用写全)
-f ,强制删除
–no-prune,不移除该镜像的过程镜像
# docker rmi -f runoob/ubantu:v4
作用:修改镜像名
语法:
# docker tag 原名:标记 新名:标记
作用:使用Dockerfile创建镜像
语法:
# doker build 参数 路径|url
–build-arg=[] :设置镜像创建时的变量;
–cpu-shares :设置 cpu 使用权重;
–cpu-period :限制 CPU CFS周期;
–cpu-quota :限制 CPU CFS配额;–cpuset-cpus :指定使用的CPU id;
–cpuset-mems :指定使用的内存 id;
–disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
–force-rm :设置镜像过程中删除中间容器;
–isolation :使用容器隔离技术;
–label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
–memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
–no-cache :创建镜像的过程不使用缓存;
–pull :尝试去更新镜像的新版本;
-q :安静模式,成功后只输出镜像ID;
–rm :设置镜像成功后删除中间容器;
–shm-size :设置/dev/shm的大小,默认值是64M;
–ulimit :Ulimit配置。
# docker build -t tomcat:v1 -f tomcat-Dokcerfile .
save:将指定镜像加载到文件
load:从文件中加载镜像
# docker save -o 文件名 镜像名
# docker load -i 文件名
# docker save -o tomcat.tar.gz docker.io/tomcat
# docker load -i tomcat.tar.gz
export:将容器保存为tar文件
import:将export的tar文件导入为镜像
2)语法
# docker export -o 指定文件名 容器名
# docker import 文件名 要导出的镜像名
# docker export -o /tmp/nginx.tar 59eabc2614ef
# docker import nginx.tar nginx:v01
# docker history 参数 镜像名
-H :以可读的格式打印镜像大小和日期,默认为true;
–no-trunc :显示完整的提交记录;
-q :仅列出提交记录ID。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项; -d: 后台运行容器,并返回容器ID; -i: 以交互模式运行容器,通常与 -t 同时使用; -P: 随机端口映射,容器内部端口随机映射到主机的高端口 -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; --name="nginx-lb": 为容器指定一个名称; --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致; --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致; -h "mars": 指定容器的hostname; -e username="ritchie": 设置环境变量; --env-file=[]: 从指定文件读入环境变量; --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行; -m :设置容器使用内存最大值; --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型; --link=[]: 添加链接到另一个容器; --expose=[]: 开放一个端口或一组端口; --volume , -v: 绑定一个卷
docker run --name=mysql_server -d -P mysql_server
2)创建一个客户端,用 --link 链接server
docker run --name=mysql_client1 --link=mysql_server:db -t -i mysql_client /usr/bin/mysql -h db -u root -pletmein
说明:将mysql_server定义为db,在后边命令里使用(-h db )
docker run --name mynginx -d nginx:latest
docker run -P -d nginx:latest
docker run -p 80:80 -v /data:/data -d nginx:latest
#绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
docker run -it nginx:latest /bin/bash
docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1;done"
略
docker kill [OPTIONS] CONTAINER [CONTAINER...]
docker kill -s KILL mynginx
docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷。
# 强制删除容器 db01、db02:
docker rm -f db01 db02
#移除容器 nginx01 对容器 db01 的连接,连接名 db:
docker rm -l db nginx01
#删除容器 nginx01, 并删除容器挂载的数据卷:
docker rm -v nginx01
#删除所有已经停止的容器:
docker rm $(docker ps -a -q)
作用
docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。
语法
docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker unpause [OPTIONS] CONTAINER [CONTAINER...]
#暂停数据库容器db01提供服务。
docker pause db01
#恢复数据库容器db01提供服务。
docker unpause db01
作用
docker create :创建一个新的容器但不启动它
用法同 docker run
语法
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
参数
同run
实例
使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoob
docker create --name myrunoob nginx:latest
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
#在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本:
docker exec -it mynginx /bin/sh /root/runoob.sh
#在容器 mynginx 中开启一个交互模式的终端:
docker exec -i -t mynginx /bin/bash
docker ps [OPTIONS]
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
runoob@runoob:~$ 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。
runoob@runoob:~$ docker ps -a -q
09b93464c2f7
b8573233d675
b1a0703e41e7
f46fb1dec520
a63b4a5597de
6a4aa42e947b
...
docker stats [OPTIONS] [CONTAINER...]
选项
–all, -a
–no-stream 只显示第一次取到的数据,默认一直显示
常用显示
[root@das-meeting-16 kong]# docker stats --no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e3b762d3fd0a kong_kong_1 0.24% 416.2MiB / 15.5GiB 2.62% 729kB / 767kB 1.36MB / 49.2kB 9
docker stats --no-stream --format \
"table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
所有占位符如下:
.Container 根据用户指定的名称显示容器的名称或 ID。
.Name 容器名称。
.ID 容器 ID。
.CPUPerc CPU 使用率。
.MemUsage 内存使用量。
.NetIO 网络 I/O。
.BlockIO 磁盘 I/O。
.MemPerc 内存使用率。
.PIDs PID 号。
作用
获取容器/镜像的元数据。
语法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
-f :查看容器某一项的信息
-s :显示总的文件大小。
--type :为指定类型返回JSON。
[root@das-meeting-16 ~]# docker inspect iot-apigw [ { "Id": "fae8a91beb0a5cf7008bd7507b2037c463775848c6cf8e8eb4406e99c3ecaf89", "Created": "2020-04-17T09:45:47.830765333Z", "Path": "/svc.apigw", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 120119, "ExitCode": 0, "Error": "", "StartedAt": "2020-05-06T12:43:10.370184639Z", "FinishedAt": "2020-05-06T12:42:53.282001566Z" }, "Image": "sha256:32aa9934fae627c8bbfe1dc1218f52b19476ff9a66b29514e45d471ab554d781", "ResolvConfPath": "/data/docker/containers/fae8a91beb0a5cf7008bd7507b2037c463775848c6cf8e8eb4406e99c3ecaf89/resolv.conf", "HostnamePath": "/data/docker/containers/fae8a91beb0a5cf7008bd7507b2037c463775848c6cf8e8eb4406e99c3ecaf89/hostname", "HostsPath": "/data/docker/containers/fae8a91beb0a5cf7008bd7507b2037c463775848c6cf8e8eb4406e99c3ecaf89/hosts", "LogPath": "/data/docker/containers/fae8a91beb0a5cf7008bd7507b2037c463775848c6cf8e8eb4406e99c3ecaf89/fae8a91beb0a5cf7008bd7507b2037c463775848c6cf8e8eb4406e99c3ecaf89-json.log", "Name": "/iot-apigw", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": [ "/data/dast/iot/prd.conf:/prd.conf:rw", "/data/dast/iot/logs:/logs:rw", "/data/dast/iot/keys:/etc/iot:rw", "/data/dast/iot/svc.apigw.prd.conf:/svc.apigw.prd.conf:rw", "/etc/localtime:/etc/localtime:rw" ],
如上,可以输出容器的各种信息包括:
docker-compose.yaml中定义的所有信息,甚至hots、hostname文件在宿主机中的位置
[root@das-meeting-16 ~]# docker inspect -f {{.Id}} iot-apigw
fae8a91beb0a5cf7008bd7507b2037c463775848c6cf8e8eb4406e99c3ecaf89
[root@das-meeting-16 ~]# docker inspect -f {{.Config.Hostname}} iot-apigw
fae8a91beb0a
[root@das-meeting-16 ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' iot-apigw
172.23.0.3
上图range 表示在这个范围查找,后边的key,注意最后要有{{end}}
[root@das-meeting-16 ~]# docker top iot-apigw
UID PID PPID C STIME TTY TIME CMD
root 120119 120088 0 5月06 ? 01:16:06 /svc.apigw
连接到容器中,注意加上 --sig-proxy=false,否则ctrl+c 退出时,容器有可能stop
docker attach --sig-proxy=false iot-apigw
docker events [OPTIONS]
-f :根据条件过滤事件;
--since :从指定的时间戳后显示所有事件;
--until :流水时间显示到指定的时间为止;
[root@das-b4 ~]# docker events --since="1591590435"
2020-06-08T09:57:36.127905035-04:00 container attach 31a5c5ef33d44b628fe2a308362830d2401a2e3436d80df8ca695a7df626ee0e (com.docker.compose.config-hash=f0348a267d54724ef74619dc2d6ca603b860cdb1a783622d505085cc608201f4, com.docker.compose.container-number=1, com.docker.compose.oneoff=False, com.docker.compose.project=iot, com.docker.compose.service=apigw, com.docker.compose.version=1.24.0, image=iot/svc.apigw:1.1.1, maintainer=Hongjun Du<duhongjun@boe.com.cn>, name=iot-apigw)
[root@das-b4 ~]# docker events --since="1588926435" -f "image"="mysql:5.7"
2020-05-09T06:02:57.006139509-04:00 container start eb2044574d569e97532fd0df03e4667b1c59eef1ce750fae9206db882b773d96 (com.docker.compose.config-hash=fde3194713b144a0f2f02a45390a139a6a5602f4eb449c28ef006bcfa0b9096d, com.docker.compose.container-number=1, com.docker.compose.oneoff=False, com.docker.compose.project=mysql, com.docker.compose.service=mysql, com.docker.compose.version=1.24.0, image=mysql:5.7, name=mysql_mysql_1)
docker logs [OPTIONS] CONTAINER
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
[root@das-b4 ~]# docker logs --since="2018-06-01" --tail=10 mysql_mysql_1
2020-05-09T10:03:50.163225Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
2020-05-09T10:03:50.420794Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2020-05-09T10:03:50.420873Z 0 [Note] IPv6 is available.
2020-05-09T10:03:50.420903Z 0 [Note] - '::' resolves to '::';
2020-05-09T10:03:50.420935Z 0 [Note] Server socket created on IP: '::'.
2020-05-09T10:03:51.025040Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2020-05-09T10:03:53.492378Z 0 [Note] InnoDB: Buffer pool(s) load completed at 200509 18:03:53
2020-05-09T10:04:02.496968Z 0 [Note] Event Scheduler: Loaded 0 events
2020-05-09T10:04:02.497378Z 0 [Note] mysqld: ready for connections.
Version: '5.7.28' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
作用
阻塞运行直到容器停止,然后打印出它的退出代码。
语法
docker wait [OPTIONS] CONTAINER [CONTAINER...]
docker wait CONTAINER
作用:
export:将容器存储为tar包
import:将expot存储的tar包释放为镜像
语法
docker export -o xxx.tar 容器名或ID
docker import xxxx.tar 镜像名:tag
docker export -o postgres-export.tar postgres
# docker port 容器名
# docker port 59eabc2614ef 80/tcp -> 0.0.0.0:80
# docker port kickass_pike 80/tcp -> 0.0.0.0:80
[root@das-meeting-16 docker]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 40 21 5.442GB 2.643GB (48%)
Containers 22 22 35.07MB 0B (0%)
Local Volumes 8 8 4.495GB 0B (0%)
Build Cache 0 0 0B 0B
docker system events
docker system info Containers: 22 Running: 22 Paused: 0 Stopped: 0 Images: 40 Server Version: 18.06.0-ce Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: false Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: d64c661f1d51c48782c9cec8fda7604785f93587 runc version: 69663f0bd4b60df09991c08812a60108003fa340 init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 3.10.0-514.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 8 Total Memory: 15.5GiB Name: das-meeting-16 ID: 5XO4:CLUY:LDI3:U54X:JIPR:HH5K:MJWR:VTBX:LB4Y:V2NR:6SPU:TOSC Docker Root Dir: /data/docker Debug Mode (client): false Debug Mode (server): false HTTP Proxy: 10.10.222.191:808 HTTPS Proxy: 10.10.222.191:808 Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 10.252.96.249:1987 127.0.0.0/8 Registry Mirrors: https://72idtxd8.mirror.aliyuncs.com/ Live Restore Enabled: false
进阶内容见《docker服务清理》
[root@das-meeting-16 ~]# docker system prune WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue? [y/N] y Deleted Networks: app_kong-net boe-iotgw-server_default Deleted Images: untagged: 10.252.97.57/iot/web@sha256:35f4fc8df4d6aee308f239d7b395435058ed95fa5467220f4a448822423f86eb deleted: sha256:ef73a04f1abb55216af6447bc8823cb30d84e96081cd502ed3a57b36091b05a3 deleted: sha256:034bf5325ec3345d68a1762c3ec1a7404cf48d7b194ac11cd86597908147ab74 untagged: 10.252.96.249:1987/epd/image-studio@sha256:d662b294b43e4277dbbb79efee729c672ba0a7191840a7ebb706cfeac77e77af deleted: sha256:e0b1eb162b0bea4e2564419150891ae624bc4523e43159f64b6b63e0411bc42b deleted: sha256:d61799bda8e52190456503c6bfdfb137bc5a8c563dfc8cbda878bf53cc656fb9
如上可知:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all build cache
docker run --restart=值 镜像
docker updata --restart=值 镜像
值:
always 任何情况下重启
on-failure 仅错误退出时重启
示例:
# docker run -d --restart=always docker.io/tomcat:v01
# docker update --restart=always tomcat-test-01
–mac-address
# docker run -it --mac-address 00:16:3e:08:9f:8f docker.io/tomcat:v01
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。