安装docker及docker-compose

卸载旧版本

在你安装docker之前一定要把系统中的旧版本卸载掉,一半系统发行商在官方apt源中带有docker,但是不是最新版的,如果你是全新安装的系统,你还没有安装过docker,那就可以省掉这一步。

需要卸载掉的非官方包包括:

  • docker.io
  • docker-compose
  • docker-doc
  • podman-docker

运行如下命令卸载这些包:

1
$for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

apt-get 可能会提示你这些包没有安装。

Images, containers, volumes, and networks 存储在 /var/lib/docker/ 目录中不会自动删除,如果你想要一个全新安装的docker,你最好手动删除他们。

安装途径

你可以根据你的需要使用如下方法安装docker:

  • 安装docker桌面版,桌面版包含了docker,这是最简单最快捷的方法;

  • 从Docker的官方apt库安装;

  • 自己手动安装;

  • 用脚本自动安装,只推荐用在测试和开发环境中。

从Docker的官方apt库安装

在新装系统第一次安装Docker之前,首先要设置Docker的官方apt库,设置apt库之后就可以使用apt命令安装了。

设置Docker的官方apt库

按照如下命令,安装一些工具和允许使用https协议:

1
2
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

添加Docker的官方GPG key:

1
2
3
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

按照如下命令设置Docker的官方apt库:

1
2
3
4
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

注意

If you use an Ubuntu derivative distro, such as Linux Mint, you may need to use UBUNTU_CODENAME instead of VERSION_CODENAME.

更新包索引:

1
sudo apt-get update

安装 Docker Engine

运行如下命令安装最新版Docker:

1
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

如果要安装特定版本Docker,可以先用如下命令列出可用版本:

1
2
# List the available versions:
$ apt-cache madison docker-ce | awk '{ print $3 }'

返回可用的版本号:

1
2
3
5:24.0.0-1~ubuntu.22.04~jammy
5:23.0.6-1~ubuntu.22.04~jammy
<...>

选择你期望的版本进行安装:

1
2
VERSION_STRING=5:24.0.0-1~ubuntu.22.04~jammy
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

运行一下 hello-world 镜像验证Docker是否安装成功。

1
sudo docker run hello-world

这条命令会下载hello-world镜像,并在一个新建的容器中运行。

到此Docker就已经安装成功了。

安装 docker-compose

上面已经安装了docker compose插件,可以通过docker compose命令运行,就是版本会旧一些,最新版的可以去docker-compose的Github下载二进制文件,然后复制到PATH路径中。

卸载 Docker Engine

1.Uninstall the Docker Engine, CLI, containerd, and Docker Compose packages:

1
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

2.Images, containers, volumes, or custom configuration files on your host aren’t automatically removed. To delete all images, containers, and volumes:

1
2
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

You have to delete any edited configuration files manually.

Docker服务控制

停止Docker服务

1
systemctl stop docker

启动Docker服务

1
systemctl start docker

重新启动Docker服务

1
systemctl restart docker

Docker常用命令

  • docker start : 启动一个容器
  • docker restart : 重新启动一个容器
  • docker stop : 关闭一个容器
  • docker status : 查看docker运行状态
  • docker ps : 列出正在运行的容器
  • docker volume : 新建docker卷
  • docker run : 从一个镜像放在新建的容器中运行。

其他详细命令可以参考官方文档

其他特定命令:

获取容器ID为282c7625119d的ip

1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 282c7625119d

启动所有容器:

1
docker start $(docker ps -aq) 

关闭所有容器:

1
docker stop $(docker ps -aq) 

创建时设置容器开机自启:

1
docker run -d --restart=always -name 容器名 使用镜像

修改已有容器开机自启:

1
2
docker update --restart=always 容器ID(或者容器名)
(容器ID或者容器名根据实际情况修改)

对已有docker容器增加新的端口映射

1、 docker ps -a #查看容器的信息

2、 docker port 容器ID/容器名称 #查看容器的端口映射情况

3、 docker inspect 容器ID |grep Id #查找要修改容器的全ID

4、 cd /var/lib/docker/containers/全ID #进到全Id相同的目录,修改 其中的hostconfig.json 和 config.v2.json文件: #注意:若该容器还在运行中,需要先停掉 docker stop 容器ID #再停掉docker服务 systemctl stop docker

5、修改hostconfig.json如下 # 格式如:”{容器内部端口}/tcp”:[{“HostIp”:””,”HostPort”:”映射的宿主机端口”}]
“PortBindings”:{“22/tcp”:[{“HostIp”:””,”HostPort”:”3316”}],”80/tcp”:[{“HostIp”:””,”HostPort”:”180”}]}

{“5432/tcp”:[{“HostIp”:””,”HostPort”:”5432”}]}

6、修改config.v2.json在ExposedPorts中加上要暴露的端口 # 格式如:”{容器内部端口}/tcp”:{} “ExposedPorts”:{“22/tcp”:{},”80/tcp”:{}}

{“5432/tcp”:{}}

修改docker镜像源

镜像源参考
中国区官方镜像:https://registry.docker-cn.com
中科大源:https://docker.mirrors.ustc.edu.cn
阿里源:https://cr.console.aliyun.com
腾讯源:https://mirror.ccs.tencentyun.com
网易源:http://hub-mirror.c.163.com

1、关闭 Docker 服务

2、修改配置文件

创建或修改/etc/docker/daemon.json文件,
默认没有daemon文件,先创建。

1
vim /etc/docker/daemon.json

增加/更新”registry-mirrors”字段

1
2
3
4
5
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn"
]
}

注:需确认”daemon.json”的位置。

3、重启 Docker 服务

作者

redtux

发布于

2023-08-05

更新于

2024-03-05

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.