赞
踩
#卸载旧版本的docker yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine #安装依赖包 yum install -y yum-utils #安装镜像仓库 官方: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 阿里云: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo /etc/yum.repos.d目录下生成docker-ce.repo镜像源 $ ll 总用量 36 -rw-r--r--. 1 root root 1664 9月 5 2019 CentOS-Base.repo -rw-r--r--. 1 root root 1309 9月 5 2019 CentOS-CR.repo -rw-r--r--. 1 root root 649 9月 5 2019 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 314 9月 5 2019 CentOS-fasttrack.repo -rw-r--r--. 1 root root 630 9月 5 2019 CentOS-Media.repo -rw-r--r--. 1 root root 1331 9月 5 2019 CentOS-Sources.repo -rw-r--r--. 1 root root 6639 9月 5 2019 CentOS-Vault.repo -rw-r--r--. 1 root root 2640 3月 16 18:38 docker-ce.repo #更新yum源 $ yum makecache fast #列出并排序您的存储库中可用的版本 $ yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:20.10.9-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.8-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.7-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.4-3.el7 docker-ce-stable #安装docker $ yum install docker-ce docker-ce-cli containerd.io #安装指定版本,包名称(docker-ce)加上版本字符串(第2列),从第一个冒号(:)开始,直到第一个-连字符。例如,docker-ce-18.09.1 $ yum install docker-ce-20.10.4 docker-ce-cli-20.10.4 containerd.io docker-compose-plugin #docker设为自启动,并启动docker $ systemctl enable docker --now #判断是否启动成功 $ docker version Client: Docker Engine - Community Version: 19.03.12 API version: 1.40 Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:46:54 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.12 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:45:28 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683 $ docker run hello-world #查看镜像 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat2 2.0 21447e933c27 11 hours ago 652MB tomcat2 1.0 344c9bb253d1 12 hours ago 652MB tomcat latest 2ae23eb477aa 4 days ago 647MB nginx 1.18 2ad6b739fe1c 5 days ago 132MB nginx latest 08393e824c32 5 days ago 132MB mysql 5.7.31 718a6da099d8 5 days ago 448MB portainer/portainer latest 62771b0b9b09 2 weeks ago 79.1MB centos latest 831691599b88 7 weeks ago 215MB centos 7.8.2003 afb6fca791e0 3 months ago 203MB #删除docker $ systemctl stop docker $ yum remove docker-ce docker-ce-cli containerd.io $ rm -rf /var/lib/docker
登录阿里云,查找到镜像加速地址,配置/etc/docker/daemon.json
{
"log-driver": "json-file" , #容器日志的默认驱动程序(默认为“ json-file”)
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"bip": "192.168.88.0/22", #指定docker0网桥IP
"registry-mirrors": ["https://t8meiwnm.mirror.aliyuncs.com"], #设置镜像加速
"insecure-registries": ["120.123.122.123:12312"] #设置私有仓库地址可以设为http
}
daemon.json参数详解
{ "api-cors-header":"", 在引擎API中设置CORS标头 "authorization-plugins":[], 要加载的授权插件 "bridge":"", 将容器附加到网桥 "cgroup-parent":"", 为所有容器设置父cgroup "cluster-store":"", 分布式存储后端的URL "cluster-store-opts":{}, 设置集群存储选项(默认map []) "cluster-advertise":"", 要通告的地址或接口名称 "data-root":"",宿主机存放容器数据目录,默认/var/lib/docker/ "debug": true, 启用调试模式,启用后,可以看到很多的启动信息。默认false "default-gateway":"", 容器默认网关IPv4地址 "default-gateway-v6":"", 容器默认网关IPv6地址 "default-runtime":"runc", 容器的默认OCI运行时(默认为" runc") "default-ulimits":{}, 容器的默认ulimit(默认[]) "dns": ["192.168.1.1"], 设定容器DNS的地址,在容器的 /etc/resolv.conf文件中可查看。 "dns-opts": [], 容器 /etc/resolv.conf 文件,其他设置 "dns-search": [], 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的 主机时,DNS不仅搜索host,还会搜索host.example.com 。 注意:如果不设置, Docker 会默认用主机上的 /etc/resolv.conf 来配置容器。 "exec-opts": [], 运行时执行选项 "exec-root":"", 执行状态文件的根目录(默认为’/var/run/docker‘) "fixed-cidr":"", 容器ip需要符合IPv4地址 "fixed-cidr-v6":"", 容器ip需要符合IPv6地址 "group": "", UNIX套接字的组(默认为"docker") "hosts": [], 设置容器hosts "icc": false, 启用容器间通信(默认为true) "ip":"0.0.0.0", 绑定容器端口时的默认IP(默认0.0.0.0) "iptables": false, 启用iptables规则添加(默认为true) "ipv6": false, 启用IPv6网络 "ip-forward": false, 默认true, 启用 net.ipv4.ip_forward ,进入容器后使用 sysctl -a | grepnet.ipv4.ip_forward 查看 "ip-masq":false, 启用IP伪装(默认为true) "labels":["nodeName=node-121"], docker主机的标签,很实用的功能,例如定义:–label nodeName=host-121 "live-restore": true, 在容器仍在运行时启用docker的实时还原 "log-driver":"", 容器日志的默认驱动程序(默认为" json-file") "log-level":"", 设置日志记录级别("调试","信息","警告","错误","致命")(默认为"信息") "max-concurrent-downloads":3, 设置每个请求的最大并发下载量(默认为3) "max-concurrent-uploads":5, 设置每次推送的最大同时上传数(默认为5) "mtu": 0, 设置容器网络MTU "oom-score-adjust":-500, 设置守护程序的oom_score_adj(默认值为-500) "pidfile": "", Docker守护进程的PID文件 "raw-logs": false, 全时间戳机制 "selinux-enabled": false, 默认 false,启用selinux支持 "storage-driver":"", 要使用的存储驱动程序 "swarm-default-advertise-addr":"", 设置默认地址或群集广告地址的接口 "tls": true, 默认 false, 启动TLS认证开关 "tlscacert": "", 默认 ~/.docker/ca.pem,通过CA认证过的的certificate文件路径 "tlscert": "", 默认 ~/.docker/cert.pem ,TLS的certificate文件路径 "tlskey": "", 默认~/.docker/key.pem,TLS的key文件路径 "tlsverify": true, 默认false,使用TLS并做后台进程与客户端通讯的验证 "userland-proxy":false, 使用userland代理进行环回流量(默认为true) "userns-remap":"", 用户名称空间的用户/组设置 "bip":"192.168.88.0/22", 指定网桥IP "registry-mirrors": ["https://192.498.89.232:89"], 设置镜像加速 "insecure-registries": ["120.123.122.123:12312"], 设置私有仓库地址可以设为http "storage-opts": [ "overlay2.override_kernel_check=true", "overlay2.size=15G" ], 存储驱动程序选项 "log-opts": { "max-file": "3", "max-size": "10m", }, 容器默认日志驱动程序选项 "iptables": false 启用iptables规则添加(默认为true) }
重启docker
$ systemctl daemon-reload
$ systemctl restart docker
$ systemctl stop docker
$ systemctl disable docker
$ yum remove docker-ce docker-ce-cli containerd.io
$ rm -rf /var/lib/docker
$ rm -rf /var/lib/containerd
docker version #显示docker版本信息
docker info #显示docker系统信息,镜像数量
docker --help #docker帮助文档
镜像介绍: 镜像是分层的。docker save -o aa.tar 镜像后解压aa.tar。会出现以下层级:两个文件夹、两个json文件 $ ll total 818196 drwxr-xr-x. 18 root root 232 Jul 1 14:26 36571afe6d2548cfc84668e896ac888dbd71e2e4ab0f04c99689c27679fb4a2b drwxr-xr-x. 3 root root 62 Jul 1 14:26 706d821f8350705241faed7f1e6e79ab5bcd791cff4ca481c119993190bf3272 -rw-r--r--. 1 root root 1817 Jun 17 20:18 af0d3f5bc593b26a2a8fc9428e9a5257bd614f00bebb7d2dae72ecb21e52607a.json -rw-------. 1 root root 837820928 Jul 1 14:24 a.tar -rw-r--r--. 1 root root 266 Jan 1 1970 manifest.json 作用: manifest.json:镜像制作的层级结构,例如是哪层是最底层,哪层是最上层会在文件中展示 af0d3f5bc593b26a2a8fc9428e9a5257bd614f00bebb7d2dae72ecb21e52607a.jso:元数据,例如镜像的制作时间、作者 文件夹中层级:一个压缩包、一个json文件,一个版本文件 $ ls json layer.tar VERSION 作用: json文件:元数据,这一层镜像的制作时间、作者 layer.tar:发生的文件变化会打包在该文件里 VERSION:版本号
$ docker images #显示所有镜像 REPOSITORY TAG IMAGE ID CREATED SIZE tomcat2 2.0 21447e933c27 12 hours ago 652MB tomcat2 1.0 344c9bb253d1 12 hours ago 652MB tomcat latest 2ae23eb477aa 4 days ago 647MB nginx 1.18 2ad6b739fe1c 5 days ago 132MB nginx v2.0.8.3.9.2latest 08393e824c32 5 days ago 132MB mysql 5.7.31 718a6da099d8 5 days ago 448MB portainer/portainer latest 62771b0b9b09 2 weeks ago 79.1MB centos latest 831691599b88 7 weeks ago 215MB centos 7.8.2003 afb6fca791e0 3 months ago 203MB REPOSITORY:镜像仓库 TAG :版本 IMAGE ID:镜像版本 CREATED:镜像创建时间 SIZE:大小 #可选项 $ docker images --help Usage: docker images [OPTIONS] [REPOSITORY[:TAG]] List images Options: -a, --all #显示所有镜像 -q, --quiet #只显示镜像ID
$ docker pull mysql #获取镜像 docker pull mysql:5.7.31 Using default tag: latest #如果不写,tag默认为最新 latest: Pulling from library/mysql bf5952930446: Already exists 8254623a9871: Already exists 938e3e06dac4: Already exists ea28ebf28884: Already exists f3cef38785c2: Already exists 894f9792565a: Already exists 1d8a57523420: Already exists 6c676912929f: Pull complete ff39fdb566b4: Pull complete fff872988aba: Pull complete 4d34e365ae68: Pull complete 7886ee20621e: Pull complete Digest: sha256:c358e72e100ab493a0304bda35e6f239db2ec8c9bb836d8a427ac34307d074ed Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest docker pull mysql = docker pull docker.io/library/mysql:latest
#以推送至阿里云为例
#先登录
$ docker login --username=xxxx registry.cn-shanghai.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
#给推送镜像打上符合推送标准的标签
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xxxx/nginx:[镜像版本号]
#推送镜像至镜像库
$ docker push registry.cn-hangzhou.aliyuncs.com/xxxx/nginx:[镜像版本号]
$ docker rmi -f 831691599b88(镜像ID) #删除镜像
Untagged: centos:latest
Untagged: centos@sha256:4062bbdd1bb0801b0aa38e0f83dece70fb7a5e9bce223423a68de2d8b784b43b
Deleted: sha256:831691599b88ad6cc2a4abbd0e89661a121aff14cfa289ad840fd3946f274f1f
Deleted: sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8
#删除所有镜像
$ docker rmi -f $(docker images -qa)
#将镜像ubuntu:15.10标记runoob/ubuntu:v3 镜像
$ docker tag ubuntu:15.10 runoob/ubuntu:v3
$ docker images runoob/ubuntu:v3
EPOSITORY TAG IMAGE ID CREATED SIZE
runoob/ubuntu v3 4e3b13c8a266 3 months ago 136.3 MB
#当镜像中存在<none>如果使用image iD打标签,不会复制一个新的镜像,会在原有的基础上更新
#将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档
$ docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3 #-o参数:输出到某个文件
#如果使用镜像ID打包会丢失tag标签
$ docker save -o aaa.tar 80d28bedfe5d
$ docker load -i aaa.tar
ba0dae6243cc: Loading layer [==================================================>] 684.5kB/684.5kB
Loaded image ID: sha256:80d28bedfe5dec59da9ebf8e6260224ac9008ab5c11dbbe16ee3ba3e4439ac2c
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 80d28bedfe5d 2 years ago 683kB
#导入使用 docker save 命令导出的镜像
#--input , -i : 指定导入的文件,
#--quiet , -q : 精简输出信息
#如果出现load镜像后tag信息丢失是因为save时使用的tag 则会保存 tag信息,如果使用image ID 则会丢失
$ docker load -i my_ubuntu_v3.tar
容器运行的最低标准:必须拥有前台进程,
例如:/usr/local/nginx/sbin/nginx 无法启动容器,因为该命令启动后就会退出。
使用 /usr/local/nginx/sbin/nginx && tail -f /usr/local/nginx/logs/access.log 或者nginx -g "daemon off;"
#运行容器
$ docker run --name mynginx --restart=always -d -p 88:80
#可选项
--name #容器启动后显示名称
-it #交互方式运行
-d #后台方式运行
-p #端口映射 -p 88:80 主机的88映射到容器的80
-h #指定容器主机名,默认主机名为容器id
--rm #退出后立即删除容器。不加rm参数时,docker stop的容器可以在docker ps -a看到,加了rm参数,停止时自动删除
--restart=always #容器开机自启
#1、提交镜像 2、备份容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab91b0164917 nginx "/docker-entrypoint.…" 4 seconds ago Up 2 seconds 0.0.0.0:88->80/tcp mynginx
$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
$ docker commit -a "jss" ab91b0164917(容器id) newnginx:v1.0(新标签)
#可选项
-a, --作者
-c, --修改列表
-m, --提交信息
-p, --暂停运行中的容器 默认为true
#列出正在运行的镜像
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
524364ed36f3 tomcat2:2.0 "catalina.sh run" 12 hours ago Up 12 hours 0.0.0.0:8080->8080/tcp tomcat2
#可选项
$ docker ps --help
Usage: docker ps [OPTIONS]
List containers
Options:
-a, --all #列出所有镜像,会将之前停止的也列出来
-q, --quiet #只列出镜像ID
退出容器(容器会停止):exit
容器不停止退出:ctrl+p+q
#删除容器
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aff8853f54bc centos:7.8.2003 "bash" 4 minutes ago Exited (0) 4 minutes ago sweet_sammet
e5003806cd8d centos:7.8.2003 "bash" 25 minutes ago Exited (0) 25 minutes ago frosty_mestorf
e4e300574780 centos:7.8.2003 "/bin/bash" 26 minutes ago Exited (0) 26 minutes ago competent_beaver
524364ed36f3 tomcat2:2.0 "catalina.sh run" 12 hours ago Up 12 hours 0.0.0.0:8080->8080/tcp tomcat2
809ca9a10ef9 portainer/portainer "/portainer" 13 hours ago Exited (2) 12 hours ago portainer
$ docker rm -f aff8853f54bc(容器ID)
#删除所有容器
$ docker rm -f $(docker ps -qa)
$ docker start 容器ID #启动容器
$ docker stop 容器ID #停止容器
$ docker restart 容器ID #重启容器
$ docker kill 容器ID #停止容器
$ docker logs -ft 524364ed36f3(容器ID) #查看日志
$ docker top 524364ed36f3(容器ID) #查看进程信息
UID PID PPID C STIME TTY TIME CMD
root 30915 30899 0 8月09 pts/0 00:02:04 /usr/local/openjdk-11/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
查看当前物理机资源占用情况
$ docker run --name nginx -d nginx
$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d67541e18f0f nginx 0.00% 5.281MiB / 7.795GiB 0.07% 516B / 0B 0B / 14.8kB 9
$ docker inspect 524364ed36f3(容器ID) #查看元数据
[
{
"Id": "524364ed36f37cc8f1ab0fa1a935fde821bdd55c2ad0197e6cb65b2951c5a841",
"Created": "2020-08-09T14:35:06.520157859Z",
"Path": "catalina.sh",
"Args": [
"run"
],
"State": {
....
]
$ docker exec -it 524364ed36f3(容器ID) /bin/bash #进入正在运行的容器
-i #交互模式打开
-t #打开tty的窗口
root@524364ed36f3:/usr/local/tomcat#
$ docker cp 524364ed36f3(容器ID):/usr/local/tomcat/README.md(容器内部路径) /opt/(容器外路径)
$ ll /opt/
总用量 4
drwxr-xr-x. 2 root root 6 8月 7 21:56 aaaa
drwx--x--x. 4 root root 28 8月 6 17:09 containerd
-rw-r--r--. 1 root root 3255 7月 1 04:14 README.md
$ docker pull nginx #获取镜像(默认最新的镜像) $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat2 2.0 21447e933c27 13 hours ago 652MB tomcat2 1.0 344c9bb253d1 13 hours ago 652MB tomcat latest 2ae23eb477aa 4 days ago 647MB nginx 1.18 2ad6b739fe1c 5 days ago 132MB nginx latest 08393e824c32 5 days ago 132MB $ docker run -it -d --name nginx -p 80:80 nginx #后台运行nginx 把容器80端口映射为服务器80端口 运行名称 nginx b04596afba6008b8e717f1f2b9653191934dafde2e79295745d8e0bf8c15b7c6 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b04596afba60 nginx "/docker-entrypoint.…" 3 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp nginx #测试 $ curl localhost <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。