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
所在的本地路径或一个URL
(Git
仓库地址)。构建上下文环境会被递归处理,所以,构建所指定的路径还包括了子目录,而URL
还包括了其中指定的子模块。
一般Dockerfile放在一个空目录下面,根据当前的目录构建,但是有时候不希望有其他内容提交,使用.dockerignore
例如:
cat .dockerignore
*.jar.*
也可以使用 -f 知道Dockerfile文件的位置
docker build -f /path/to/a/Dockerfile .