Docker一些实用知识总结

Docker一些实用知识总结

有些Docker知识,还是蛮有用的,记录下。

一. 如何进入某个容器

docker exec -it 容器名 /bin/bash

这样进入之后,如果exit出来,容器不会退出。

二. 查看容器操作系统

cat /etc/issue

三. 查看容器是否Docker环境

1、是否存在.dockerenv文件

  • docker环境下存在:ls -alh /.dockerenv 文件
# ls -alh /.dockerenv
-rwxr-xr-x 1 root root 0 Oct 22 15:28 /.dockerenv
  • 非docker环境,没有.dockerenv文件

2、查询系统进程的cgroup信息

  • docker环境下 cat /proc/1/cgroup,可以看到冒号后面有docker字样。
# cat /proc/1/cgroup
14:name=systemd:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
13:rdma:/
12:pids:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
11:hugetlb:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
10:net_prio:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
9:perf_event:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
8:net_cls:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
7:freezer:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
6:devices:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
5:memory:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
4:blkio:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
3:cpuacct:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
2:cpu:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
1:cpuset:/docker/86b55d835b8e74cbea7f48b45316c9c06b1db2939daf34bc759c34abd7d288e3
  • 非docker环境下cat /proc/1/cgroup,冒号后面没有docker字样。
12:freezer:/
11:hugetlb:/
10:pids:/init.scope
9:devices:/
8:rdma:/
7:memory:/init.scope
6:cpu,cpuacct:/
5:net_cls,net_prio:/
4:perf_event:/
3:cpuset:/
2:blkio:/
1:name=systemd:/init.scope

四. 查看和删除镜像方法

  • 查看镜像
# docker images
REPOSITORY    TAG               IMAGE ID       CREATED         SIZE
ceph/daemon   latest-luminous   a5b94691cc5d   21 months ago   728MB
ceph/daemon   latest-mimic      8e3e2bbd7119   21 months ago   714MB
  • 删除镜像
docker rmi ceph/daemon:latest-luminous

或者知道镜像ID,也可以这样

docker rmi  a5b94691cc5d

五. 导出导入本地镜像

  • 导出本地镜像
# docker images
REPOSITORY    TAG               IMAGE ID       CREATED         SIZE
redis         latest            7faaec683238   13 months ago   113MB
ceph/daemon   latest-luminous   a5b94691cc5d   21 months ago   728MB
ceph/daemon   latest-mimic      8e3e2bbd7119   21 months ago   714MB

执行命令:比如IMAGE ID=a5b94691cc5d,如果不指定对应的tag,那么到时候导入镜像就会变成none,所以这里我指定了ceph/daemon:latest-luminous

格式:

docker save -o 输出的文件名 tag名

例子:

docker save -o ceph-latest-luminous.tar ceph/daemon:latest-luminous
  • 导入到新机器的docker镜像
docker load < ceph-latest-luminous.tar

六. 导出当前容器

  • 导出本地某个容器
$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
7691a814370e        ubuntu:18.04        "/bin/bash"         36 hours ago        Exited (0) 21 hours ago                       test

$ docker export 7691a814370e > ubuntu.tar
  • 导入容器快照到本地镜像
$ cat ubuntu.tar | docker import - test/ubuntu:v1.0

$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
test/ubuntu         v1.0                9d37a6082e97        About a minute ago   171.3 MB

七. Docker配置文件

当您下载安装的Docker Version不低于1.10时,建议通过daemon config进行配置。

如果你还没成功启动过Docker服务,你可以手工先创建配置文件。

# mkdir -p /etc/docker/
# touch /etc/docker/daemon.json
  • 使用配置文件/etc/docker/daemon.json,配置Docker一些常用配置。
# vim /etc/docker/daemon.json
{
  "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
   ],
  "bip": 172.18.0.1/16,
  "data-root": "/data01/docker"
}

配置项说明:

  1. registry-mirrors:镜像加速器,提升下载镜像速度。可配置多个
  2. bip:容器的IP网段,这里主要是有时候网段冲突,为避免生成的docker0网卡导致本地路由冲突,可以进行自定义配置。
  3. data-root: 镜像、容器的存储路径,默认是/var/lib/docker。旧版本是使用graph,具体根据你的版本来选择配置项参数名。

附录:如何手工删除Docker0网桥的IP,比如默认是172.17.0.1 如何改成172.17.18.0.1/16。

# yum install bridge-utils -y

# ip link set dev docker0 down
# brctl delbr docker0
# iptables -t nat -F POSTROUTING

# brctl addbr docker0
# ip addr add 172.18.0.1/16 dev docker0 
# ip link set dev docker0 up

# systemctl daemon-reload && systemctl start docker
  • 读取配置,重启服务
systemctl daemon-reload && systemctl start docker

本文没有授权给任何组织、企业和个人转载,未经作者允许禁止转载!

欢迎关注我的公众号testerzhang,原创技术文章第一时间推送。

公众号二维码

updatedupdated2022-11-142022-11-14