# docker 使用笔记和命令

笔记中的命令有可能会过时,如果出错,可以查阅官方文档。

  1. https://docs.docker.com/engine/install/centos/
  2. https://yeasy.gitbooks.io/docker_practice/install/centos.html
  3. http://www.runoob.com/docker/docker-hello-world.html

# 一、安装命令

  1. 首先查看 centos 内核版本是否支持 Docker,必须为 3.10 及以上
uname -r
1
  1. 安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
1
  1. 设置存储库 (添加软件源信息)
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
1
2
3
  1. 更新 yum 缓存
yum makecache fast
1
  1. 注意:如果生产建议使用稳定库,如果要使用 edge 或 test,则执行如下命令启用
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
1
2
  1. 安装 Docker-ce
yum -y install docker-ce
1
  1. 启动 Docker 后台服务
systemctl start docker
1
  1. 检查 docker 版本,查看更多详细信息
docker --version
docker info
1
2
  1. 测试运行 hello-world
docker run hello-world
1
  1. 列出这个 hello wolrd 镜像
docker image ls
1
  1. 如果 Hello World 容器还在运行,你就不需要下面命令,查看所有
docker container ls --all
1

# 二、镜像加速

  1. 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器
# 当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。
vi /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://registry.docker-cn.com/",
        "https://reg-mirror.qiniu.com/",
        "http://hub-mirror.c.163.com"
    ]
}
1
2
3
4
5
6
7
8
9
  1. 重新启动服务
systemctl daemon-reload
systemctl restart docker # 或则 docker.service
1
2
  1. 检查加速器是否生效
docker info
# 看到下列信息即可表示成功更改
# Registry Mirrors:
# https://registry.docker-cn.com/
# http://hub-mirror.c.163.com
# https://reg-mirror.qiniu.com/
1
2
3
4
5
6

# 三、异常记录

  1. docker 镜像启动成功, 但是无法访问,示例:浏览器访问 [host ip]:32768
vi /etc/sysctl.conf
# 或者
vi /usr/lib/sysctl.d/00-system.conf
# 添加下面一行
net.ipv4.ip_forward=1
1
2
3
4
5
  1. 重启 network 服务
systemctl restart network
1
  1. 查看是否修改成功
sysctl net.ipv4.ip_forward
# 如果返回为“net.ipv4.ip_forward = 1”则表示成功了
1
2

# 四、操作命令

  1. 删除容器
docker container rm NAMES
# 如果要删除一个运行中的容器,可以添加 -f 参数。Docker 会发送 SIGKILL 信号给容器。
1
2
  1. 清理所有处于终止状态的容器
docker container prune
1
  1. 查看所有已经创建的包括终止状态的容器
docker container ls -a
1
  1. 如果发现某[host ip]:32768 打不开,无法访问,此时需开启对应的 NAMES 容器服务
docker container start NAMES
# 或者重启
docker restart CONTAINER ID
1
2
3
  1. 镜像构建
# 以 Dockerfile 文件为例
docker build -t countly/server .
1
2
  1. 完成后,查看构建好的 images 镜像
docker images
1
  1. 在 127.0.0.1:4000 下,开启 docker container 服务
# -d: 让容器在后台运行
# -P: 将容器内部使用的网络端口映射到我们使用的主机上
docker run -d -P countly/server
docker run -d --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
docker run -d -p 0.0.0.0:2222:4873/tcp verdaccio/verdaccio:4.x-next
1
2
3
4
5
  1. 查看正在运行的 container 容器,PORTS 端口是否已映射,正常可访问
docker container ps
1
  1. 删除一个正在运行的名称为 NAMES 的 container 容器
docker container rm NAMES -f
1
  1. 删除 images 镜像
docker rmi IMAGE ID
1
  1. 删除 id 为 "None" 的 image 的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
1
  1. 查看应用的信息
docker logs -f NAMES
1
  1. 以 root 身份,进入 CONTAINER ID 为 69d137adef7a 的容器
docker exec -it --user root 69d137adef7a /bin/sh
# 或者
docker exec -it --user root 69d1 bash
# 或者
docker exec -it --user root NAMES
1
2
3
4
5
Last Updated: 2023/9/18 06:50:08