安装 Docker

1.首先,更新现有的软件包列表:

1
sudo apt update -y

2.接下来,安装一些必备软件包,让 apt 通过 HTTPS 使用软件包。

1
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y

3.然后将官方 Docker hub 的 GPG key 添加到系统中。

1
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

4.将 Docker 版本库添加到APT源:

1
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

5.接下来,我们用新添加的 Docker 软件包来进行升级更新。

1
sudo apt update -y

6.安装 Docker

1
sudo apt install docker-ce -y

7.检查 Docker 是否正在运行

1
2
docker --version
sudo systemctl status docker

8.重启 docker 并设置开机自启

1
2
3
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

9.修改Docker配置(来自烧饼博客

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训)

1
2
3
4
5
6
7
8
9
10
11
12
13
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF

然后重启 Docker 服务:

1
systemctl restart docker

在 Docker 中使用镜像

1.要查看已下载到计算机的镜像:

1
docker images

2.删除某个docker镜像

1
docker rmi <your-image-id>

3.一次删除多张镜像

1
docker rmi <your-image-id> <your-image-id> ...

4.一次删除所有镜像

1
docker rmi $(docker images -q)

在 Docker 中使用容器

1.要查看所有的容器对象,请使用:

1
docker ps -a

docker ps -a -q 分解

  • docker ps 列出活动中容器。
  • -a 这个选项用于列出所有容器,包括停止运行的。如果没有这个选项,则默认只列出在运行的容器。
  • -q 这个选项列出容器的数字 ID,而不是容器的所有信息。

2.要启动已停止的容器,请使用docker start命令+容器ID或容器名

  • 停止所有容器运行:docker stop $(docker ps -a -q)

3.通过docker rm命令来删除不用的容器。

  • 先使用docker ps -a命令查找相关镜像关联的容器的容器ID或名称,然后通过docker rm命令来删除其删除。
  • 删除所有停止运行的容器:docker rm $(docker ps -a -q)

Docker 容器开机自启

1.在使用docker run启动容器时,使用–restart参数来设置:

1
docker run -m 512m --memory-swap 1G -it -p 58080:8080 --restart=always  

2.如果创建时未指定 –restart=always ,可通过update 命令设置

1
docker update --restart=always 容器ID或名称

安装 Docker Compose

1.安装

1
2
3
4
export LATEST_VERSION=$(wget -qO- -t1 -T2 "https://api.github.com/repos/docker/compose/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
sudo curl -L https://github.com/docker/compose/releases/download/$LATEST_VERSION/docker-compose-linux-`uname -m` > ./docker-compose
sudo chmod +x ./docker-compose
sudo mv ./docker-compose /usr/local/bin/docker-compose

2.查看版本

1
docker-compose --version

3.使用 -d 选项以分离模式启动 Compose(后台)

1
docker-compose up -d

4.要查看正在运行的 docker 容器,请使用以下命令

1
docker-compose ps

5.删除容器

1
2
3
4
5
cd /root/data/docker_data/joplin  # 进入docker-compose所在的文件夹

docker-compose down # 停止容器,此时不会删除映射到本地的数据

rm -rf /root/data/docker_data/joplin # 完全删除映射到本地的数据

6.一些 Docker Compose 常用命令:

1
2
3
4
5
docker-compose restart  # 重启容器
docker-compose stop # 暂停容器
docker-compose down # 删除容器
docker-compose pull # 更新镜像
docker-compose exec artalk bash # 进入容器

7.Docker Compose升级

删除现有容器,拉取最新镜像,然后重新创建容器即可。

1
2
3
docker-compose down
docker-compose pull
docker-compose up -d

开机自动启动应用容器

1.方法一、通过 Docker Restart Policy 方法

在 Docker 中,支持 –restart 选项,来控制容器自动启动。在 Docker Compose 中,应该使用 restart 属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '2'
services:
database:
build: ./mysql/
command: mysqld --user=root --verbose
+ restart: always
environment:
MYSQL_DATABASE: "web_level3_sqli"
MYSQL_USER: "web_level3_sqli"
MYSQL_PASSWORD: "thisisasecurepassword123"
MYSQL_ROOT_PASSWORD: "root"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
web:
build: ./www/
+ restart: always
ports:
- "12000:80"
volumes:
- ./www/src:/var/www/html
links:
- database

注意事项:
1)Docker 并不知道这些服务的依赖关系及启动顺序,需要我们精心编排 docker-compose.yaml 文件;
2)Docker Compose 不支持 deploy:restart_policy 属性,该属性只能用于 a swarm with docker stack deploy 环境;

2.方法二、通过进程管理服务(推荐)

该方法本质上还是在执行 docker-compose 命令。

使用 systemd 管理
如下示例,可以根据需要进行设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# cat /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker/app/
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

7.卸载 Docker Compose

1
sudo rm /usr/local/bin/docker-compose

常见问题

1.出错提示:error storing credentials - err: exit status 1, out: Cannot autolaunch D-Bus without X11 $DISPLAY

解决方法:

1
sudo apt install gnupg2 pass -y

参考链接