参考官方文档
http://www.docker.com
选择安装操作系统
这里选择安装系统以及版本
这里选择ubuntu安装docker
参考官方文档安装
https://docs.docker.com/engine/install/ubuntu/
1. apt-get remove docker docker-engine docker.io containerd runc 2. apt-get update 3. apt-get install ca-certificates curl gnupg lsb-release 4. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 5. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker- archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 6. apt-get update 7. apt-get install docker-ce docker-ce-cli containerd.io -y 8. apt-cache madison docker-ce 9. apt-get install docker-ce=docker-ce-cli= containerd.io 10. docker run hello-world
测试
#查看版本 root@ze-virtual-machine:~# docker version Client: Docker Engine - Community Version: 20.10.14 API version: 1.41 Go version: go1.16.15 Git commit: a224086 Built: Thu Mar 24 01:48:02 2022 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.14 API version: 1.41 (minimum version 1.12) Go version: go1.16.15 Git commit: 87a90dc Built: Thu Mar 24 01:45:53 2022 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.5.11 GitCommit: 3df54a852345ae127d1fa3092b95168e4a88e2f8 runc: Version: 1.0.3 GitCommit: v1.0.3-0-gf46b6ba docker-init: Version: 0.19.0 GitCommit: de40ad0 #测试 root@ze-virtual-machine:~# docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
查看service文件
root@ze-virtual-machine:~# cat /lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target docker.socket firewalld.service containerd.service Wants=network-online.target Requires=docker.socket containerd.service [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always # Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229. # Both the old, and new location are accepted by systemd 229 and up, so using the old location # to make them work for either version of systemd. StartLimitBurst=3 # Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230. # Both the old, and new name are accepted by systemd 230 and up, so using the old name to make # this option work for either version of systemd. StartLimitInterval=60s # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Comment TasksMax if your systemd version does not support it. # Only systemd 226 and above support this option. TasksMax=infinity # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process OOMScoreAdjust=-500 [Install] WantedBy=multi-user.target
核心目录
软件数据目录 /var/lib/docker/ 专属服务目录 /etc/docker
2.离线安装
获取软件 mkdir /data/softs wget -c https://download.docker.com/linux/static/stable/x86_64/docker- 20.10.14.tgz
解压软件 tar xf docker-20.10.14.tgz -C /usr/local/bin --strip-components=1 注意: --strip-components=1 表示仅仅将该压缩文件中的内容,解压到指定的目录中
定制系统服务
root@ubuntu2004:/data/softs# mkdir /var/lib/docker /etc/docker root@ubuntu2004:/data/softs# vim /usr/lib/systemd/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/local/bin/dockerd -H unix:///var/run/docker.sock --data-root=/var/lib/docker ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
定制服务启动参数文件
# vim /etc/docker/daemon.json
{
"registry-mirrors": [], "insecure-registries": []
}
用户基本配置
创建用户组 groupadd docker 将当前用户加入到指定用户组usermod -aG docker $USER 更新用户组 newgrp docker 注意: 如果没有docker组的话,会导致如下的报错: could not change group /var/run/docker.sock to docker: group docker not found 重载配置文件 systemctl daemon-reload systemctl start docker systemctl enable docker



