Docker基础命令

安装Docker

#卸载旧版本的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 95 2019 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 95 2019 CentOS-CR.repo
-rw-r--r--. 1 root root  649 95 2019 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 95 2019 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 95 2019 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 95 2019 CentOS-Sources.repo
-rw-r--r--. 1 root root 6639 95 2019 CentOS-Vault.repo
-rw-r--r--. 1 root root 2640 316 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

卸载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常用命令

帮助命令
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
$ 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
$ 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 push
#以推送至阿里云为例
#先登录
$ 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
$ docker rmi -f 831691599b88(镜像ID) #删除镜像
Untagged: centos:latest
Untagged: centos@sha256:4062bbdd1bb0801b0aa38e0f83dece70fb7a5e9bce223423a68de2d8b784b43b
Deleted: sha256:831691599b88ad6cc2a4abbd0e89661a121aff14cfa289ad840fd3946f274f1f
Deleted: sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8


#删除所有镜像
$ docker rmi -f  $(docker images -qa)
docker tag
#将镜像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打标签,不会复制一个新的镜像,会在原有的基础上更新
docker save
#将镜像 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 load
#导入使用 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
#运行容器
$ 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  #容器开机自启

docker commit
#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
#列出正在运行的镜像
$ 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 rm
#删除容器
$ 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/stop/restart/kill
$ docker start 容器ID #启动容器
$ docker stop 容器ID  #停止容器
$ docker restart 容器ID  #重启容器
$ docker kill 容器ID   #停止容器
docker logs
$ docker logs -ft 524364ed36f3(容器ID) #查看日志
docker top
$ 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 stats
查看当前物理机资源占用情况
$ 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
$ docker inspect 524364ed36f3(容器ID) #查看元数据
[
    {
        "Id": "524364ed36f37cc8f1ab0fa1a935fde821bdd55c2ad0197e6cb65b2951c5a841",
        "Created": "2020-08-09T14:35:06.520157859Z",
        "Path": "catalina.sh",
        "Args": [
            "run"
        ],
        "State": {
            ....
]
docker exec
$ docker exec -it 524364ed36f3(容器ID) /bin/bash #进入正在运行的容器
-i  #交互模式打开
-t  #打开tty的窗口
root@524364ed36f3:/usr/local/tomcat#
docker cp
$ docker cp 524364ed36f3(容器ID):/usr/local/tomcat/README.md(容器内部路径) /opt/(容器外路径)
$ ll /opt/
总用量 4
drwxr-xr-x. 2 root root    6 87 21:56 aaaa
drwx--x--x. 4 root root   28 86 17:09 containerd
-rw-r--r--. 1 root root 3255 71 04:14 README.md

docker安装Nginx

$ 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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值