docker命令集锦

1 docker images -qa  获取所有镜像的id

2 docker rmi -f $(docker images -qa)  删除所有的镜像

3 进入运行的容器:docker  exec -ti  容器id  /bin/bash

   退出运行的容器:ctrl+p+q

3.1 不进入容器执行命令:docker  exec  -it  容器名/ID  ping ip -c2 -w2

4 查看仓库中的镜像:curl http://192.168.137.2:5000/v2/_catalog

5 查看某个容器的日志:docker logs -f -t --since="2019-07-01" --tail=10 c0894b1ecbea(容器id)

       查看某个容器的配置信息:docker inspect [容器id]

  查看某个服务的输出日志: docker service logs -f  cbi_admin_api_tst【服务名】

      查看容器的日志具体位置 docker inspect --format='{{.LogPath}}'  容器名称

[root@mycomputer_1 ~]# docker inspect --format='{{.LogPath}}' bbox01
/app/docker/containers/61a74a9ac1658be6a4abade73ec1c727c548d448f3ec073b5f6ffd248b6e4c35/61a74a9ac1658be6a4abade73ec1c727c548d448f3ec073b5f6ffd248b6e4c35-json.log

6 查看docker的根目录位置:docker info|grep "Docker Root Dir"

7 docker默认根目录位置:/var/lib/docker

8 修改docker的根目录:

[root@localhost ~]# cat /etc/docker/daemon.json 
{
 "insecure-registries":["192.168.137.2:5000"],
 "data-root":"/app/docker"
}

systemctl restart docker 
docker info #查看是否生效

9 创建镜像仓库:

docker pull  registry
docker run -itd -p 192.168.2.225:5000:5000 -v /data/docker/registry:/var/lib/registry --restart=always --name registry registry:latest
# --restart=always 随着docker服务的重启而启动

 10 停止,启动容器:docker stop 容器名称  ,docker start 容器名称

11 查看docker容器的端口映射:docker port  容器名称/容器id

12 查看容器内部运行的进程:

[root@localhost ~]# docker top registry
UID         PID        PPID       C         STIME       TTY         TIME                CMD
root        8617       8599       0         23:13       pts/0       00:00:00            registry serve /etc/docker/registry/config.yml

 13 删除停止的容器:docker rm 容器名称

 14 给容器打标签:docker tag 860c279d2fec runoob/centos:dev

 15 docker的service:可以在容器停止的情况下,重新启动一个:

[root@localhost ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                        PORTS
rjdwbbltn8yd        test                replicated          1/1                 localhost:5000/test:latest   *:8001->8001/tcp, *:8010->8010/tcp
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE                        COMMAND     CREATED             STATUS           PORTS      NAMES
e99c47d3023b        localhost:5000/test:latest   "nginx"     6 minutes ago       Up 6 minutes     80/tcp      test.1.x09hilbp3r0y6gppetbbby7gz
[root@localhost ~]# docker stop e99c47d3023b  #停止容器
e99c47d3023b
[root@localhost ~]# docker ps  #没有了
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker ps  #过了一会儿自己启动了
CONTAINER ID        IMAGE                        COMMAND      CREATED             STATUS                  PORTS     NAMES
a6400bc8aa8a        localhost:5000/test:latest   "nginx"      6 seconds ago       Up Less than a second   80/tcp    test.1.hgrrz9gfgw6y6y4pivg1mn8jh
[root@localhost ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                        PORTS
rjdwbbltn8yd        test                replicated          1/1                 localhost:5000/test:latest   *:8001->8001/tcp, *:8010->8010/tcp

 16 设置已经创建的容器开机自启动:docker update --restart=always 容器名称

  docker update --restart=always registry

 16.1 给docker service 绑定一个目录

    docker service create --mount type=bind,src=主机目录,dst=容器目录     。。。。。

    docker service update --mount-add  type=bind,src=主机目录,dst=容器目录    。。。。。。

  其他参数:--mount type=volume,src=cbi_portal_v3_tst,dst=/opt   ---》挂载卷到容器的某个目录下面(docker volume ls|grep cbi_portal_v3_tst)

    --replicas 1 副本数量,也就是起几个容器

    --constraint 'node.hostname==主机名称'   ---》将副本限制在某台主机下面

 17 查看swarm集群中,主机如何加入manager节点和加入worker节点

[root@localhost ~]# docker swarm join-token worker   #查看如何加入worker节点
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-631ve9410gjgggbtdj15ylc02ll0bk0vmwxcifv4zgk5hfqtl8-3atcmkntjm8mdtfnxw0cgjdjj 192.168.137.2:2377

[root@localhost ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                        PORTS
rjdwbbltn8yd        test                replicated          1/1                 localhost:5000/test:latest   *:8001->8001/tcp, *:8010->8010/tcp
[root@localhost ~]# docker swarm join-token manager  #查看如何加入manager节点
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-631ve9410gjgggbtdj15ylc02ll0bk0vmwxcifv4zgk5hfqtl8-9fu1tqtwmf1k7v91lypa6uhqr 192.168.137.2:2377

 18 搭建docker swarm

#先建立免密登陆
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.137.3
#建立swarm集群
docker swarm init
#另外一台加入worker

[root@localhost ~]# docker swarm join --token SWMTKN-1-631ve9410gjgggbtdj15ylc02ll0bk0vmwxcifv4zgk5hfqtl8-3atcmkntjm8mdtfnxw0cgjdjj 192.168.137.2:2377
This node joined a swarm as a worker.

#主节点上面查看

  docker node ls

 19 搭建docker service 

docker service create --name nginx --publish 80:80 --replicas 2 bitnami/nginx  #后面的镜像没有的话它会去网上拉取,建立两个副本
#主节点上面查看

[root@localhost ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ibb0ekppspwp nginx replicated 2/2 bitnami/nginx:latest *:80->80/tcp

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c54bb16786b5 bitnami/nginx:latest "/entrypoint.sh /run…" 3 minutes ago Up 3 minutes 8080/tcp, 8443/tcp nginx.2.w8ujuzx9dlwvrelju0ar2laeu

#worker节点上面查看

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
baca209aa2a7 bitnami/nginx:latest "/entrypoint.sh /run…" 43 seconds ago Up 42 seconds 8080/tcp, 8443/tcp nginx.1.6esnsf77wa65e6asrr9y3ljea

 20 在swarm中模拟一个worker节点关闭或宕机

#worker节点
systemctl stop docker
#主节点

[root@localhost ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ibb0ekppspwp nginx replicated 2/2 bitnami/nginx:latest *:80->80/tcp

[root@localhost ~]# docker ps #出现了两个
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4cebd8de7145 bitnami/nginx:latest "/entrypoint.sh /run…" 2 minutes ago Up 2 minutes 8080/tcp, 8443/tcp nginx.1.t3txcm6hrjl5fjyq1i105szv9
c54bb16786b5 bitnami/nginx:latest "/entrypoint.sh /run…" 8 minutes ago Up 8 minutes 8080/tcp, 8443/tcp nginx.2.w8ujuzx9dlwvrelju0ar2laeu

#这样的情况,即使worker节点的服务恢复了,主节点的副本也不会过来,要过来怎么处理,使用docker stop

  #主节点:docker stop c54bb16786b5 #停止其中一个容器id,这样的话,另外一个副本就跑去worker节点了

 21 在warm的情况下,我们把docker服务停止了,启动docker后 service会怎么样?

#主节点上面
systemctl stop docker
#查看worker节点
[root@localhost ~]# docker ps #依然还在
CONTAINER ID    IMAGE                  COMMAND                  CREATED             STATUS              PORTS                NAMES
c48e71c9c9f5    bitnami/nginx:latest   "/entrypoint.sh /run…"   5 minutes ago       Up 5 minutes        8080/tcp, 8443/tcp   nginx.2.f777lya1hi7gi1runshh5c5j1
#现在启动docker
systemctl start docker
#查看主节点---》service也跟着启动了

[root@localhost ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ibb0ekppspwp nginx replicated 2/2 bitnami/nginx:latest *:80->80/tcp

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbb7c8b7e208 bitnami/nginx:latest "/entrypoint.sh /run…" 6 minutes ago Up 6 minutes 8080/tcp, 8443/tcp nginx.1.fuu8vanirdvblykkeph1r74xr

 22 docker的镜像加速地址:"registry-mirrors":“http://f1361db2.m.daocloud.io”

23 docker删除孤立的卷(被停掉服务占用的卷,正在用的删除不了):docker volume rm `docker volume ls -q`

24 查看docker容器的完整命令:docker ps  --no-trunc 

25 查看docker某个节点的标签:docker node inspect  node主机名 | grep -i -C 1 labels

[root@pek cb]# docker node inspect cbi236|grep -i -C 1 labels
        "Spec": {
            "Labels": {
                "env": "prd"

 26  .dockerignore  --->根据 .(点)所在的目录使用,不一定在Dockerfile所在的目录

在使用docker build命令时,会根据Dockerfile文件和上下文构建docker镜像,将所有的文件放入进程中

构建上下文是指Dockerfile所在的本地路径或一个URLGit仓库地址)。构建上下文环境会被递归处理,所以,构建所指定的路径还包括了子目录,而URL还包括了其中指定的子模块。

一般Dockerfile放在一个空目录下面,根据当前的目录构建,但是有时候不希望有其他内容提交,使用.dockerignore

例如:

cat  .dockerignore
*.jar.*

也可以使用 -f 知道Dockerfile文件的位置

docker build -f /path/to/a/Dockerfile .
原文地址:https://www.cnblogs.com/mmyy-blog/p/10918076.html