一、​容器rootfs命令

1、commit     #通过容器创建本地镜像

语法: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
实例:把本地镜像制作成镜像
[root@localhost ~]# docker commit -a "song" -m "test" gaice gaice:v5
sha256:b2e8afbca277f247398d536890636d23894f5d02d09af2acd99c1c5c6ec04cc6


2、cp     #在宿主机和容器之间相互拷贝文件
语法: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
            docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
实例:将容器中的/usr/local/apache-tomcat-8.5.23/1 拷贝到本地


[root@localhost ~]#docker cp gaice:/usr/local/apache-tomcat-8.5.23/1 /root/
修改完毕后,将该文件重新copy回容器
[root@localhost ~]# docker cp /root/1 gaice:/usr/local/apache-tomcat-8.5.23/

3、diff    #查看容器内发生改变的文件

语法:   docker diff CONTAINER
实例:查看容器mymysql的文件结构更改。[root@localhost ~]# docker diff gaice
C /root
A /root/.ash_history
C /tmp
C /tmp/hsperfdata_root
A /tmp/hsperfdata_root/1
C /usr
C /usr/bin
A /usr/bin/vim
C /usr/local
C /usr/local/apache-tomcat-8.5.23
C /usr/local/apache-tomcat-8.5.23/logs
A /usr/local/apache-tomcat-8.5.23/logs/localhost.2021-12-23.log
A /usr/local/apache-tomcat-8.5.23/logs/localhost.2021-12-28.log

二、容器生命周期管理

1、run       #启动一个容器,等同于docker create && docker start命令

语法:Usage:    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镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
[root@localhost ~]# docker run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
[root@localhost ~]#docker run -P -d nginx:latest

使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data。
[root@localhost ~]#docker run -p 80:80 -v /data:/data -d nginx:latest --name=nginx

docker inspect nginx查看是否mounts挂载是否成功

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
[root@localhost ~]# docker run -it nginx:latest /bin/bash
root@b8573233d675:/#

2、start/stop/restart  #启动、停止、重启一个容器

语法:docker start [OPTIONS] CONTAINER [CONTAINER...]
           docker stop [OPTIONS] CONTAINER [CONTAINER...]
            docker restart [OPTIONS] CONTAINER [CONTAINER...]
实例:启动已被停止的容器tomcat
[root@localhost ~]#docker start tomcat
停止运行中的容器tomcat
[root@localhost ~]#docker stop tomcat
重启容器tomcat
[root@localhost ~]#docker restart tomcat

3、kill      #强制终止容器

语法:Usage:    docker kill [OPTIONS] CONTAINER [CONTAINER...]

-s :向容器发送一个信号
实例:杀掉运行中的容器tomcat
[root@localhost ~]# docker kill -s KILL tomcat

tomcat

4、docker pause :暂停容器中所有的进程。

     docker unpause :恢复容器中所有的进程。

语法
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]
实例
暂停数据库容器mysql;提供服务。
docker pause mysql
恢复数据库容器 mysql提供服务。
docker unpause mysql

5、create   #仅创建一个容器

语法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
实例:使用docker镜像nginx:latest创建一个容器,并将容器命名为mysql
[root@localhost ~]# docker create --name mysql mysql:latest
338c6bd5be37a58fb42003e06da6ba2b0b3c160dcf7e7090e9488a6ea0e87dc1

6、exec      #进入容器

语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

-d :分离模式: 在后台运行

-i :即使没有附加也保持STDIN 打开

-t :分配一个伪终端

[root@localhost ~]# docker exec -it gaice /bin/sh

7、rm     #删除一个或多个容器,默认只能删除非运行状态的容器,-f参数可以强制删除

语法:  docker rm [OPTIONS] CONTAINER [CONTAINER...]

-f :通过 SIGKILL 信号强制删除一个运行中的容器。

-l :移除容器间的网络连接,而非容器本身。

-v :删除与容器关联的卷。

实例:强制删除容器db01、db02
[root@localhost ~]# docker rm -f db01、db02
移除容器nginx01对容器db01的连接,连接名db
[root@localhost ~]# docker rm -l db 
删除容器nginx01,并删除容器挂载的数据卷
[root@localhost ~]# docker rm -v nginx01

docker rm -f ($docker ps -aq)删除全部容器

三、容器操作

1、ps        #列出所有容器,默认只列出当前正在运行的容器,

-a参数可以查看所有状态的容器

-f :根据条件过滤显示的内容。

--format :指定返回值的模板文件。

-l :显示最近创建的容器。

-n :列出最近创建的n个容器。

--no-trunc :不截断输出。

-q :静默模式,只显示容器编号。

-s :显示总的文件大小。
语法:Usage:    docker ps [OPTIONS]
实例:列出所有在运行的容器信息。
[root@localhost ~]# docker ps -l
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS    PORTS     NAMES
338c6bd5be37   mysql:latest   "docker-entrypoint.s…"   6 hours ago   Created             mysql

列出所有创建的容器ID。

[root@localhost ~]# docker ps -a -q
09b93464c2f7
b8573233d675

2、inspect     #用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。

语法:  docker inspect [OPTIONS] CONTAINER|IMAGE|TASK

-f :指定返回值的模板文件。

-s :显示总的文件大小。

--type :为指定类型返回JSON。
实例:获取容器mysql的信息。

[root@localhost ~]# docker inspect mysql
[
    {
        "Id": "338c6bd5be37a58fb42003e06da6ba2b0b3c160dcf7e7090e9488a6ea0e87dc1",
        "Created": "2021-12-28T03:14:59.618382622Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "mysqld"
        ],
        "State": {
            "Status": "created",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "0001-01-01T00:00:00Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:bbf6571db4977fe13c3f4e6289c1409fc6f98c2899eabad39bfe07cad8f64f67",

3、top      #查看容器中运行的进程信息,支持 ps 命令参数

语法:    docker top CONTAINER [ps OPTIONS]
实例:查看容器mymysql的进程信息。
[root@localhost ~]# docker top mymysql
UID    PID    PPID    C      STIME   TTY  TIME       CMD
999    40347  40331   18     00:58   ?    00:00:02   mysqld
查看所有运行容器的进程信息。
[root@localhost ~]#for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

4、attach     #进入容器内部,推出后停止

语法:docker attach [OPTIONS] CONTAINER

ttach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器
实例:进入tomcat容器
[root@localhost ~]# docker attach --sig-proxy=false tomcat 
[root@66d300a868cf /]#

5、events    #实时输出docker服务器的事件,包括容器的创建、启动和关闭等

语法: docker events [OPTIONS]

-f :根据条件过滤事件;

--since :从指定的时间戳后显示所有事件;

--until :流水时间显示到指定的时间为止;

实例:显示docker2021-12-28后的所有事件。

如果指定的时间是到秒级的,需要将时间转成时间戳。如果时间为日期的话,可以直接使用,如--since="2021-12-28"。

使用date命令获取一个特定时间的linux时间戳

[root@localhost ~]# date --date=20211228 +%s
1640620800
[root@localhost ~]# docker events --since="1640620800"2021-12-28T17:24:01.605259486+08:00 container exec_start: /bin/sh -c mysql -h127.0.0.1 -P$DB_PORT -uroot -p$MYSQL_ROOT_PASSWORD -e 'SHOW DATABASES;' e5471702f4af20c7e8ba6b4fb900c922608bb55a9bb1e8e681a39c645add7d29 (com.docker.compose.config-hash=c383873b2ff43e023246df762c2cba8f25cd4d3dc7c869e7c996241fe55ceb3a, com.docker.compose.container-number=1, com.docker.compose.oneoff=False, com.docker.compose.project=jms, com.docker.compose.project.config_files=compose/docker-compose-init-db.yml,compose/docker-compose-mysql.yml,compose/docker-compose-redis.yml,compose/docker-compose-network.yml, com.docker.compose.project.working_dir=/opt/jumpserver-installer-v2.14.2/compose, com.docker.compose.service=mysql, com.docker.compose.version=1.29.2, execID=1e980d87c3d276fcbccf774c093cc222d5a4c3f81efafd82aeb04f7637881020, image=jumpserver/mysql:5, name=jms_mysql)
如果想要获取某一个镜像的事件需用用到-f

docker events -f "image"="mysql" --since="2021-12-28"

6、logs       #用于查看容器的日志,它将输出到标准输出的数据作为日志输出到docker logs命令的终端上。常用于后台型容器

语法:Usage:    docker logs [OPTIONS] CONTAINER

-f : 跟踪日志输出

--since :显示某个开始时间的所有日志

-t : 显示时间戳

--tail :仅列出最新N条容器日志

实例:跟踪查看容器tomcat的日志输出。

[root@localhost ~]# docker logs gaice
23-Dec-2021 03:23:14.636 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.23
23-Dec-2021 03:23:14.647 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Sep 28 2017 10:30:11 UTC
23-Dec-2021 03:23:14.647 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.23.0
23-Dec-2021 03:23:14.648 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
23-Dec-2021 03:23:14.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            3.10.0-862.el7.x86_64
23-Dec-2021 03:23:14.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
23-Dec-2021 03:23:14.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-1.8-openjdk/jre
23-Dec-2021 03:23:14.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_131-b11
23-Dec-2021 03:23:14.655 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
23-Dec-2021 03:23:14.655 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/apache-tomcat-8.5.23

查看容器mysql从2021年12月28日后的最新10条日志。
[root@localhost ~]# docker logs --since="2021-12-28" --tail=10 mysql

7、wait       #捕捉容器停止时的退出码,执行此命令后,该命令会“hang”在当前终端,直到容器停止,此时,会打印出容器的退出码。

语法: docker wait CONTAINER [CONTAINER...]

[root@localhost ~]# docker wait gaice

8、export    #将容器打包,导出为tar文件格式

语法:docker export [OPTIONS] CONTAINER
实例:将id为746300e14aa4的容器按日期保存为tar文件。
[root@localhost ~]#docker export -o mysql-`date +%Y%m%d`.tar 746300e14aa4
[root@localhost ~]#ls mysql-`date +%Y%m%d`.tar
mysql-20211228.tar

9、port       #输出容器与宿主机端口映射的信息

语法: docker port CONTAINER [PRIVATE_PORT[/PROTO]]
实例:查看容器tomcat的端口映射情况。

[root@localhost ~]# docker port gaice
8080/tcp -> 0.0.0.0:8085
8080/tcp -> :::8085

四、镜像仓库

1、login     #登录到docker 镜像仓库,默认为dockerhub

语法:   docker login [OPTIONS] [SERVER]

docker login  : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

-u :登陆的用户名

-p :登陆的密码

实例:登陆到Docker Hub
[root@localhost ~]# docker login -u 用户名 -p 密码 [SERVER]
logout    #退出登录
语法:Usage:    docker logout [SERVER]
实例:退出docker hub
[root@localhost ~]# docker logout [SERVER]

2、 pull      #从仓库中下载一个镜像,默认为docker hub上

语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

-a :拉取所有 tagged 镜像

--disable-content-trust :忽略镜像的校验,默认开启

实例:

从Docker Hub下载java最新版镜像。
[root@localhost ~]# docker pull java
从Docker Hub下载REPOSITORY为java的所有镜像。
[root@localhost ~]# docker pull -a java

3、push      #上传镜像到仓库,默认为docker hub上,私人仓库需要用户名和密码

语法:docker push [OPTIONS] NAME[:TAG]

--disable-content-trust :忽略镜像的校验,默认开启

上传本地镜像myapache:v1到镜像仓库中。

root@localhost ~]# docker push myapache:v1

4、search    #在docker hub上搜索镜像

语法:   docker search [OPTIONS] TERM

--automated :只列出 automated build类型的镜像;

--no-trunc :显示完整的镜像描述;

-f <过滤条件>:列出收藏数不小于指定值的镜像。

实例:从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像
[root@localhost ~]# docker search -f stars=10 java

镜像仓库参数说明

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

五、本地镜像管理

1、images    #列出本地所有的镜像

语法: docker images [OPTIONS] [REPOSITORY[:TAG]]

-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

--digests :显示镜像的摘要信息;

-f :显示满足条件的镜像;

--format :指定返回值的模板文件;

--no-trunc :显示完整的镜像信息;

-q :只显示镜像ID。

实例:查看本地镜像列表。
[root@localhost ~]#docker images

2、rmi      #删除一个或多个镜像

Usage:    docker rmi [OPTIONS] [IMAGE...]

-f :强制删除;

--no-prune :不移除该镜像的过程镜像,默认移除;

docker rmi -f ($docker images -aq)删除全部镜像

3、tag      #标记本地镜像,将其归入某一个仓库

语法:   docker tag IMAGE[:TAG] IMAGE[:TAG]
实例:将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。
[root@localhost ~]# docker tag ubuntu:15.10 runoob/ubuntu:v3
[root@localhost ~]#  docker images   runoob/ubuntu:v3
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/ubuntu       v3                  4e3b13c8a266        3 months ago        136.3 MB

4、 build      #命令用于使用 Dockerfile 创建镜像。后期细讲

语法:docker build [OPTIONS] PATH | 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 :尝试去更新镜像的新版本;

--quiet, -q :安静模式,成功后只输出镜像 ID;

--rm :设置镜像成功后删除中间容器;

--shm-size :设置/dev/shm的大小,默认值是64M;

--ulimit :Ulimit配置。

--squash :将 Dockerfile 中所有的操作压缩为一层。

--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

--network: 默认 default。在构建期间设置RUN指令的网络模式

5、history   #显示镜像的创建过程

语法: Usage:    docker history [OPTIONS] IMAGE

-H :以可读的格式打印镜像大小和日期,默认为true;

--no-trunc :显示完整的提交记录;

-q :仅列出提交记录ID。

实例: 查看镜像mysql的创建历史。
[root@localhost ~]# docker history mysql

6、save     #将指定镜像保存成 tar 归档文件

语法:  docker save [OPTIONS] IMAGE [IMAGE...]
实例:将镜像mysql生成mysql.tar文档
[root@localhost ~]#  [root@localhost ~]# docker save -o mysql.tar mysql
[root@localhost ~]#  ll mysql.tar
-rw-------. 1 root root 137346560 12月 27 11:52 mysql.tar

7、load     #将打包的镜像导入

语法:Usage:    docker load [OPTIONS]

--input , -i : 指定导入的文件,代替 STDIN。

--quiet , -q : 精简输出信息。

实例:导入一个打包好的的msyql镜像
[root@localhost ~]#docker load < mysql.tar
[root@localhost ~]#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mysql             latest              deb8033b1c86 weeks ago         137 MB

8、import    #把创建的容器归档导入成一个镜像,类型为tar文件

语法:Usage:    docker images [OPTIONS] [REPOSITORY[:TAG]]
实例:从镜像归档文件gaice.tar创建镜像,命名为gaicev6
[root@localhost ~]# docker import gaice.tar.gz  gaice:v6

export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。

save 和 load 导出的是一个镜像的快照, 镜像本身,

你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。

快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。

  • docker save 保存的是镜像(image),docker export 保存的是容器(container);
  • docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;
  • docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。
  • docker export保存的是容器(ps)
  • docker import用来载入容器成镜像包

六、info|version

1、info    #显示 Docker 系统信息,包括镜像和容器数。。

语法: docker info  [OPTIONS]

2、ersion   #显示docker的版本信息

语法:   docker version [OPTIONS]
实例:显示本机docker 版本信息
[root@localhost ~]# docker version

七、服务组件

1、network   #管理docker网络

语法:   docker network COMMAND
实例:用于动态的将容器添加进一个已有网络/将容器从网络中移除。
[root@localhost ~]#docker network connect/docker network disconnect
创建docker网卡
[root@localhost ~]#docker network create -d overlay --ip-range=192.168.2.0/24 --gateway=192.168.2.1 --subnet=192.168.2.0/24 multihost2
显示网卡
[root@localhost ~]#docker network ls
删除docker网卡
[root@localhost ~]#docker network rm
查看docker网卡的相关详细信息
[root@localhost ~]#docker network inspect
node      Manage Docker Swarm nodes #管理docker swarm节点
语法:Usage:    docker node COMMAND
pause     Pause all processes within one or more containers #暂停容器中所有的进程。
语法:Usage:    docker pause CONTAINER [CONTAINER...]
实例:暂停数据库容器db01提供服务。
[root@localhost ~]#docker pause db01

2、service    #管理docker service。Docker Service是一种声明式的、可扩展的、负载均衡的应用。Docker Service是面向用户的应用

语法:  docker service COMMAND
实例:创建一个拥有5个副本的Docker Service
[root@localhost ~]# docker service create --name myService -p 8080:8080 --replicas 5 an_image

3、stats    #动态显示容器的资源消耗情况,包括:CPU、内存、网络I/O

语法: docker stats [OPTIONS] [CONTAINER...]
实例:显示ID为746300e14aa4的状态信息
[root@localhost ~]# docker stats 746300e14aa4

CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT     MEM %     NET I/O     BLOCK I/O   PIDS
746300e14aa4   gaice     0.17%     104.5MiB / 3.685GiB   2.77%     648B / 0B   0B / 0B     48

4、swarm     #管理docker swarm

语法:  docker swarm COMMAND
实例:初始化swarm manager并制定网卡地址
docker swarm init --advertise-addr 192.168.10.117

强制删除集群,如果是manager,需要加–force
docker swarm leave --force
docker node rm docker-118

查看swarm worker的连接令牌
docker swarm join-token worker

查看swarm manager的连接令牌
docker swarm join-token manager

使旧令牌无效并生成新令牌
docker swarm join-token --rotate

加入docker swarm集群
docker swarm join --token SWMTKN-1-5d2ipwo8jqdsiesv6ixze20w2toclys76gyu4zdoiaf038voxj-8sbxe79rx5qt14ol14gxxa3wf 192.168.10.117:2377

查看集群中的节点
docker node ls

查看集群中节点信息
docker node inspect docker-117 --pretty

调度程序可以将任务分配给节点
docker node update --availability active docker-118

调度程序不向节点分配新任务,但是现有任务仍然保持运行
docker node update --availability pause docker-118

调度程序不会将新任务分配给节点。调度程序关闭任何现有任务并在可用节点上安排它们
docker node update --availability drain docker-118

添加节点标签
docker node update --label-add label1 --label-add bar=label2 docker-117

删除节点标签
docker node update --label-rm label1 docker-117

将节点升级为manager
docker node promote docker-118

将节点降级为worker
docker node demote docker-118

查看服务列表
docker service ls

查看服务的具体信息
docker service ps redis

创建一个不定义name,不定义replicas的服务
docker service create nginx

创建一个指定name的服务
docker service create --name my_web nginx

创建一个指定name、run cmd的服务
docker service create --name helloworld alping ping docker.com

创建一个指定name、version、run cmd的服务
docker service create --name helloworld alping:3.6 ping docker.com

创建一个指定name、port、replicas的服务
docker service create --name my_web --replicas 3 -p 80:80 nginx

为指定的服务更新一个端口
docker service update --publish-add 80:80 my_web

为指定的服务删除一个端口
docker service update --publish-rm 80:80 my_web

将redis:3.0.6更新至redis:3.0.7
docker service update --image redis:3.0.7 redis

配置运行环境,指定工作目录及环境变量
docker service create --name helloworld --env MYVAR=myvalue --workdir /tmp --user my_user alping ping docker.com

创建一个helloworld的服务
docker service create --name helloworld alpine ping docker.com

更新helloworld服务的运行命令
docker service update --args “ping www.baidu.com” helloworld

删除一个服务
docker service rm my_web

在每个群组节点上运行web服务
docker service create --name tomcat --mode global --publish mode=host,target=8080,published=8080 tomcat:latest

创建一个overlay网络
docker network create --driver overlay my_network
docker network create --driver overlay --subnet 10.10.10.0/24 --gateway 10.10.10.1 my-network

创建服务并将网络添加至该服务
docker service create --name test --replicas 3 --network my-network redis

删除群组网络
docker service update --network-rm my-network test

更新群组网络
docker service update --network-add my_network test

创建群组并配置cpu和内存
docker service create --name my_nginx --reserve-cpu 2 --reserve-memory 512m --replicas 3 nginx

更改所分配的cpu和内存
docker service update --reserve-cpu 1 --reserve-memory 256m my_nginx

指定每次更新的容器数量
--update-parallelism

指定容器更新的间隔
--update-delay

定义容器启动后监控失败的持续时间
--update-monitor

定义容器失败的百分比
--update-max-failure-ratio

定义容器启动失败之后所执行的动作
--update-failure-action

创建一个服务并运行3个副本,同步延迟10秒,10%任务失败则暂停
docker service create --name mysql_5_6_36 --replicas 3 --update-delay 10s --update-parallelism 1 --update-monitor 30s --update-failure-action pause --update-max-failure-ratio 0.1 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36

回滚至之前版本
docker service update --rollback mysql

自动回滚 
如果服务部署失败,则每次回滚2个任务,监控20秒,回滚可接受失败率20%
docker service create --name redis --replicas 6 --rollback-parallelism 2 --rollback-monitor 20s --rollback-max-failure-ratio .2 redis:latest

创建服务并将目录挂在至container中
docker service create --name mysql --publish 3306:3306 --mount type=bind,src=/data/mysql,dst=/var/lib/mysql --replicas 3 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.36

Bind带来的风险 
1、绑定的主机路径必须存在于每个集群节点上,否则会有问题 
2、调度程序可能会在任何时候重新安排运行服务容器,如果目标节点主机变得不健康或无法访问 
3、主机绑定数据不可移植,当你绑定安装时,不能保证你的应用程序开发方式与生产中的运行方式相同

添加swarm配置
echo "this is a mysql config" | docker config create mysql -

查看配置
docker config ls

查看配置详细信息
docker config inspect mysql

删除配置
docker config rm mysql

添加配置
docker service update --config-add mysql mysql

删除配置
docker service update --config-rm mysql mysql

添加配置
docker config create homepage index.html

启动容器的同时添加配置
docker service create --name nginx --publish 80:80 --replicas 3 --config src=homepage,target=/usr/share/nginx/html/index.html nginx

5、update     #动态的更新一个或多个容器的配置

语法: docker update CONTAINER [CONTAINER...]
实例:更新mysql容器CPU限制cpu-shares=512

[root@localhost ~]# docker update --cpu-shares 512 mysql
mysql

更新容器的memory
[root@localhost ~]# docker update --memory 512m --memory-swap -1 gaice

gaice

更新容器restart策略
[root@localhost ~]#docker update --restart=on-failure:3 gaice

gaice

6、volume    #管理docker数据卷

语法: docker volume COMMAND
实例:启动一个mysql01容器,包含两个数据卷
[root@localhost ~]#docker run -d -it -v nginx:/etc/nginx/conf.d -p 81:80 --name=nginx01 nginx /bin/bash
创建App_Container容器,挂载mysql02容器中的数据卷
[root@localhost ~]#  docker run -d -it -p 82:80 --name=nginx02 --volumes-from=nginx01 nginx /bin/bash

Docker全命令详解相关推荐

  1. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  2. docker ps命令详解 列出运行中的容器

    docker ps命令详解 列出运行中的容器 使用docker ps命令即可列出运行中的容器,执行该命令后,会出现如下7列表格 CONTAINER_ID      表示容器ID IMAGE       ...

  3. docker images 命令详解

    [原文链接]docker images 命令详解 文章目录 一.docker images 命令选项 二.docker images 使用实例 2.1 显示最近创建的镜像 2.2 根据镜像名和tag值 ...

  4. docker inspect命令详解

    docker inspect命令详解 1.作用 获取容器/镜像的元数据(JSON格式) 2.语法格式 docker inspect [OPTIONS] NAME|ID [NAME|ID...] -f ...

  5. docker build命令详解_Docker镜像与容器常用命令图文详解

    一.系统命令 #查看docker版本 docker version #查看docker的系统信息,包含镜像容器的数量 docker info #查看docker的所有命令 docker --help ...

  6. docker build命令详解_Docker 搭建你的第一个 Node 项目到服务器

    本文你能学到什么 Docker 是什么 Docker 概念 关于 Docker 的概念是确实不太好总结,下面我通过四点向你说明 Docker 到底是个什么东西. Docker 是世界领先的软件容器平台 ...

  7. Docker实战第二天(Docker常用命令详解)

    Docker常用命令 docker version #查看版本 docker search centos #搜索可用的docker镜像 docker images #查看当前docker所有镜像 do ...

  8. 【docker】docker run命令详解

    Docker run命令用于运行一个新容器,而启动一个容器需要非常多的信息,所以该命令的参数非常多,今天就详细分析下该命令支持的参数. 首先看一下该命令的格式: [html] view plain c ...

  9. Docker(45)- docker build 命令详解

    docker build 命令原理 docker build 命令从 Dockerfile 和上下文构建镜像 构建的上下文:位于指定 PATH 或 URL 中的一组文件 构建过程可以引用上下文中的任何 ...

最新文章

  1. GitHub:数据科学最全资料集合
  2. 增加 oracle服务名,oracle本地服务名配置说明
  3. b站测试岗怎么样_情商测试《大家一起察言观色》,一款适合作为B站测试题的游戏...
  4. mysql缺少函数_总结零散的 MySQL 基础知识
  5. 取消锚(a/)点击后页面跳转的几种方法
  6. 【官方】追踪百度钱包品牌LOGO设计
  7. python使用requests库爬取淘宝评论
  8. 去国外超市如何用英文表达你想要的东西?
  9. 工行网银网上支付 提示选择证书,但下拉框是空白,无法选择导致不能支付 解决办法
  10. 12款自动化软件测试工具,你用过哪些?
  11. java-IO-字节数组输入输出流(ByteArrayInputStream、ByteArrayOutputStream)
  12. html5个人影集,全屏的个人影集展示网页模板
  13. 全球对冲基金及其投资策略解析
  14. Python爬虫进阶——urllib模块使用案例【淘宝】
  15. 自然语言处理(NLP)-模型常用技巧:Mask【Padding Mask、Subsequent Mask】
  16. 神经网络 深度神经网络,深度神经网络应用实例
  17. android菜单功能,Android“设置”菜单
  18. 数据库优化思路 oracle,自己几年前整理的数据库优化技术方案
  19. 由生至死,众安「步步鸡」将鸡的一生安排得明明白白
  20. electron-builder打包见解

热门文章

  1. 那些让PCB工程师们头疼的EMC设计问题,这里有答案!
  2. 自然语言处理面试34题:NLP面试考点,精准详尽解析 | 小彩蛋
  3. 设计模式基础篇-04-建造者模式
  4. Scrapy爬虫之热门网站数据爬取--------第2关
  5. 代码之间为什么要加空格?
  6. 问题:SQLite, Gears在9530上面可以运行,在9630上面就不行
  7. PHP实现停车场管理系统
  8. 控制面板中的管理工具提示位置不可用
  9. c语言求圆的面积周长体积,c语言求圆的面积和周长
  10. 如何让recv函数有点脾气 (让你知道select函数的威力)