Docker 安装

来自牛奶河Wiki
阿奔讨论 | 贡献2024年6月7日 (五) 14:41的版本 →‎容器
跳到导航 跳到搜索

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。

docker-ce

  • docker-ce 社区版
  • docker-ee 商业版
# Cenos 7
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

yum install docker-ce docker-ce-cli -y
# Ubuntu 20.04
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
 "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

私有仓库
# 使用官方 registry 创建并运行一个私有仓库
# docker pull docker.m.daocloud.io/library/registry
# docker tag docker.m.daocloud.io/library/registry sys/registry     # 复制一个新名称
docker run -d -p 8000:5000 --name="uh-registry" --restart=always -v /root/docker/registry/:/var/lib/registry/ registry
容器操作
# 停止
docker stop <container_id>
# 删除
docker rm <container_id>
# 执行 ps -a 中存在
docker start <container_id or name>

# 正在运行的容器
docker ps

# 所有定义的容器
docker ps -a

# 删除镜像
docker rmi <repository>
# 以区分开为准,如:docker rmi redis:v2
REPOSITORY  TAG
redis       latest
redis       v2

daemon.json

Docker Engine 的配置管理文件, 里面几乎涵盖了所有 docker 命令行启动可以配置的参数 daemon.json配置文件详解

/etc/docker/daemon.json

registry-mirrors
* https://<your_code>.mirror.aliyuncs.com  # 阿里云镜像站(需登录)
* http://hub-mirror.c.163.com              # 网易云镜像站
* https://mirror.baidubce.com              # 百度云镜像站
* https://docker.mirrors.sjtug.sjtu.edu.cn # 上海交大镜像站
* https://docker.nju.edu.cn                # 南京大学镜像站
* https://registry.docker-cn.com           # Docker 中国官方镜像(已关闭)
* https://docker.mirrors.ustc.edu.cn       # 中国科技大学 USTC(仅供内部访问)

log-driver = [json-file]
log-level = debug, [info], warn, error, fatal
cat > /etc/docker/daemon.json << EOF
{
    "registry-mirrors": [
        "https://mirror.baidubce.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.sjtug.sjtu.edu.cn"
    ],
    "exec-opts": ["native.cgroupdriver=systemd"],
    "max-concurrent-downloads": 10,
    "max-concurrent-uploads": 5,
    "log-level": "info",
    "log-opts": {
        "max-size": "100m",
        "max-file": "2"
    },
    "live-restore": true
}
EOF

启动docker服务

# systemctl daemon-reload
# systemctl enable docker
systemctl start docker

docker 版本

上面安装的是最新版本,也可以指定版本安装

# List docker
yum list docker-ce.x86_64 --showduplicates
--> docker-ce.x86_64            3:19.03.9-3.el7                    docker-ce-stable
yum install docker-ce-19.03.9-3.el7 docker-ce-cli-19.03.9-3.el7

docker CMD

docker info
docker run hello-world
docker run -itd ubuntu:20.04 /bin/bash
-i: 交互式操作
  -t: 终端
  -d: 指定容器的运行模式为后台
  ubuntu: ubuntu 镜像
  /bin/bash: 命令,指定使用 /bin/bash 作为交互式 Shell

docker ps               # 查看启动的容器
docker exec             # 进入容器
docker stop             # 停止容器
docker restart          # 重启动容器
docker export           # 导出容器快照
docker import           # 导入容器快照
docker images           # 列出本地镜像
docker search           # 从 Docker Hub 搜索镜像
docker pull             # 下载镜像
docker rmi              # 删除镜像
docker save             # 导出镜像
docker load             # 导入镜像
docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                     PORTS     NAMES
c9aebfaf8fd5   ubuntu:20.04   "/bin/bash"   53 seconds ago   Up 52 seconds                         jovial_jepsen
bf32c8a5c049   hello-world   "/hello"   9 minutes ago    Exited (0) 9 minutes ago             great_carver
1538a050ab4c   hello-world   "/hello"   10 minutes ago   Exited (0) 7 seconds ago             inspiring_booth

docker export c9aebfaf8fd5 > ubuntu2204.tar
docker import ubuntu2204.tar test/ubuntu:v1

docker exec -it c9aebfaf8fd5 /bin/bash
exit

docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
python        3.9.19    14dfba14e806   2 days ago      997MB
postgres      latest    b9390dd1ea18   4 weeks ago     431MB
ubuntu        20.04     3cff1c6ff37e   4 weeks ago     72.8MB
hello-world   latest    d2c94e258dcb   10 months ago   13.3kB

docker save -o ubuntu2004.tar ubuntu
docker load --input ubuntu2004.tar

docker Hub

docker Hub