安装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 | sudo apt-get update |
添加Docker的官方GPG key:
1 | sudo install -m 0755 -d /etc/apt/keyrings |
按照如下命令设置Docker的官方apt库:
1 | echo \ |
注意
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 | # List the available versions: |
返回可用的版本号:
1 | 5:24.0.0-1~ubuntu.22.04~jammy |
选择你期望的版本进行安装:
1 | VERSION_STRING=5:24.0.0-1~ubuntu.22.04~jammy |
运行一下 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 | sudo rm -rf /var/lib/docker |
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 | docker update --restart=always 容器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 | { |
注:需确认”daemon.json”的位置。
3、重启 Docker 服务
安装docker及docker-compose
install_url
to use ShareThis. Please set it in _config.yml
.