Docker 教程

5.1 部署docker

用于管理容器

5.2 YUM源

5.2.1 官方网址

www.docker.com

5.2.2 docker所使用开发语言

golang

5.2.3 YUM获取

docker-cehttps://docs.docker.com/engine/install/centos/ https://docs.docker.com/

  • 先决条件

    • OS需求centos-extras必须启用存储库。默认情况下启用此存储库,但如果已禁用它,则需要重新启用它.overlay2建议使用存储驱动程序。
  • 卸载旧版本(安装docker过的)dockerdocker-engine。如果安装了这些文件,请卸载它们以及相关的依赖项。

  1. [root@localhost ~]# yum list | grep docker
  2. cockpit-docker.x86_64 195.12-1.el7.centos extras
  3. docker.x86_64 2:1.13.1-204.git0be3e21.el7 extras
  4. docker-client.x86_64 2:1.13.1-204.git0be3e21.el7 extras
  5. docker-client-latest.x86_64 1.13.1-58.git87f2fab.el7.centos
  6. docker-common.x86_64 2:1.13.1-204.git0be3e21.el7 extras
  7. docker-distribution.x86_64 2.6.2-2.git48294d9.el7 extras
  8. docker-latest.x86_64 1.13.1-58.git87f2fab.el7.centos
  9. docker-latest-logrotate.x86_64 1.13.1-58.git87f2fab.el7.centos
  10. docker-latest-v1.10-migrator.x86_64 1.13.1-58.git87f2fab.el7.centos
  11. docker-logrotate.x86_64 2:1.13.1-204.git0be3e21.el7 extras
  12. docker-lvm-plugin.x86_64 2:1.13.1-204.git0be3e21.el7 extras
  13. docker-novolume-plugin.x86_64 2:1.13.1-204.git0be3e21.el7 extras
  14. docker-registry.x86_64 0.9.1-7.el7 extras
  15. docker-v1.10-migrator.x86_64 2:1.13.1-204.git0be3e21.el7 extras
  16. pcp-pmda-docker.x86_64 4.3.2-13.el7_9 updates
  17. podman-docker.noarch 1.6.4-29.el7_9 extras
  18. python-docker-py.noarch 1:1.10.6-11.el7 extras
  19. python-docker-pycreds.noarch 1:0.3.0-11.el7 extras
  20. $ sudo yum remove docker \
  21. docker-client \
  22. docker-client-latest \
  23. docker-common \
  24. docker-latest \
  25. docker-latest-logrotate \
  26. docker-logrotate \
  27. docker-engine
  28. [root@localhost ~]#
  29. yum remove docker \
  30. docker-client \
  31. docker-client-latest \
  32. docker-common \
  33. docker-latest \
  34. docker-latest-logrotate \
  35. docker-logrotate \
  36. docker-engine
  • 使用存储库安装

在首次在新主机上安装Docker引擎之前,需要设置Docker存储库。之后,您可以从存储库中安装和更新Docker。

设置存储库

安装yum-utils包(它提供了yum-config-manager工具)并设置稳定储存库。

  • 安装yum-utils获取yum-config-manager ```powershell [root@bogon ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

$ sudo yum install -y yum-utils $ sudo yum-config-manager \ —add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

  1. - <br />
  2. ```powershell
  3. https://download.docker.com/linux/centos/docker-ce.repo
  4. [root@bogon ~]# ls /etc/yum.repos.d/
  5. CentOS-Base.repo CentOS-Media.repo epel.repo
  6. CentOS-CR.repo CentOS-Sources.repo epel-testing.repo
  7. CentOS-Debuginfo.repo CentOS-Vault.repo
  8. CentOS-fasttrack.repo docker-ce.repo

5.3 安装docker-ce

  1. [root@bogon ~]# yum repolist
  2. 已加载插件:fastestmirror
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.huaweicloud.com
  5. * epel: fedora.cs.nctu.edu.tw
  6. * extras: mirrors.163.com
  7. * updates: mirrors.neusoft.edu.cn
  8. docker-ce-stable | 3.5 kB 00:00
  9. (1/2): docker-ce-stable/x86_64/primary_db | 27 kB 00:01
  10. (2/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:01
  11. 源标识 源名称 状态
  12. base/7/x86_64 CentOS-7 - Base 10,019
  13. docker-ce-stable/x86_64 Docker CE Stable - x86_64 41
  14. *epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,082
  15. extras/7/x86_64 CentOS-7 - Extras 386
  16. updates/7/x86_64 CentOS-7 - Updates 1,580
  17. repolist: 25,108
  18. [root@bogon ~]# yum list | grep docker-ce
  19. containerd.io.x86_64 1.2.5-3.1.el7 docker-c -
  20. stable
  21. docker-ce.x86_64 3:18.09.5-3.el7 docker-c -
  22. stable
  23. docker-ce-cli.x86_64 1:18.09.5-3.el7 docker-c -
  24. stable
  25. docker-ce-selinux.noarch 17.03.3.ce-1.el7 docker-c -
  26. stable
  1. PS: 注意要安装docker-ce版,不要安装docker(否则可能安装1.13老版本)
  2. [root@bogon ~]# yum -y install docker-ce
  1. [root@bogon ~]# systemctl is-enabled docker
  2. disabled
  3. [root@bogon ~]# systemctl enable docker
  4. Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to
  5. /usr/lib/systemd/system/docker.service.
  6. [root@bogon ~]# systemctl start docker
  7. [root@bogon ~]# docker version
  8. Client:
  9. Version: 18.09.5
  10. API version: 1.39
  11. Go version: go1.10.8
  12. Git commit: e8ff056
  13. Built: Thu Apr 11 04:43:34 2019
  14. OS/Arch: linux/amd64
  15. Experimental: false
  16. Server: Docker Engine - Community
  17. Engine:
  18. Version: 18.09.5
  19. API version: 1.39 (minimum version 1.12)
  20. Go version: go1.10.8
  21. Git commit: e8ff056
  22. Built: Thu Apr 11 04:13:40 2019
  23. OS/Arch: linux/amd64
  24. Experimental: false
  25. [root@localhost yum.repos.d]# docker --version
  26. Docker version 20.10.5, build 55c4c88
  27. [root@localhost yum.repos.d]# docker -v
  28. [root@localhost yum.repos.d]# docker info

daemon 英 [ˈdiːmən] : 守护程序

  1. [root@bogon ~]# docker version
  2. Client:
  3. Version: 18.09.5
  4. API version: 1.39
  5. Go version: go1.10.8
  6. Git commit: e8ff056
  7. Built: Thu Apr 11 04:43:34 2019
  8. OS/Arch: linux/amd64
  9. Experimental: false
  10. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker
  11. daemon running?
  12. #如果出现如上提示,请启动docker服务

docker 安装三种方法:

  • docker yum源安装yum-utils获取yum-config-manager

    1. $ sudo yum install -y yum-utils
    2. $ sudo yum-config-manager \
    3. --add-repo \
    4. https://download.docker.com/linux/centos/docker-ce.repo
    • 安装最新版本
  1. $ sudo yum install docker-ce docker-ce-cli containerd.io
  2. # docker -v
  3. # docker --version
  4. Docker version 20.10.5, build 55c4c88
  5. # docker version
  • 若要安装特定版本在Docker Engine中,列出可用的版本,然后选择并安装:
  1. 列出所有的docker 版本
  2. $ yum list docker-ce --showduplicates | sort -r
  3. 安装特定的docker版本 For example, docker-ce-18.09.1
  4. $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
  5. $ yum install -y docker-ce-18.09.1
  • 启动docker
$ sudo systemctl start docker
  • 测试,通过运行hello-world图像。
$ sudo docker run hello-world
此命令下载测试映像并在容器中运行。当容器运行时,它会打印一条信息性消息并退出
  • rpm 安装.rpm为您的发行文件和手动安装它。每次升级Docker引擎时,都需要下载一个新文件。Https://download.docker.com/linux/centos/选择你的CentOS版本。然后浏览到x86_64/stable/Packages/并下载.rpm要安装的Docker版本的文件。https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

    #wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-20.10.5-3.el7.x86_64.rpm
    
    sudo yum install /path/to/package.rpm
    
    sudo systemctl start docker
    sudo docker run hello-world
    
  • 脚本安装

    shell> curl -fsSL https://get.docker.com -o get-docker.sh
    shell> sudo sh get-docker.sh
    如果您想使用Docker作为非根用户,那么现在应该考虑将您的用户添加到“docker”组中
    shell> sudo usermod -aG docker <your-user>
    
  • 可选的安装后操作https://docs.docker.com/engine/install/linux-postinstall/

    • 将Docker管理为非root用户

如果你不想为docker命令用sudo,创建一个组。docker并将用户添加到其中。当Docker守护进程启动时,它将创建一个unix套接字,该套接字可由docker小组。

若要创建docker分组并添加用户:
- 创建docker小组。
shell> sudo groupadd docker
- 将用户添加到docker小组。
shell> sudo usermod -aG docker $USER
- 退出并重新登录,激活对组的更改
在Linux上,还可以运行以下命令来激活对组的更改:
 newgrp 指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组
shell> newgrp docker 
- 验证您是否可以运行docker无命令sudo.
shell> docker run hello-world

如果您最初运行DockerCLI命令,则使用sudo在将用户添加到docker组中,您可能会看到以下错误,这表明~/.docker/目录创建的权限不正确,原因是sudo命令。

若要解决此问题,请删除~/.docker/目录(自动重新创建,但任何自定义设置都丢失),或使用以下命令更改其所有权和权限:

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
  • 将Docker配置为在启动时启动 ```powershell Docker服务默认配置为在启动时启动 shell> sudo systemctl enable docker.service shell> sudo systemctl enable containerd.service

shell> sudo systemctl stop docker.service shell> sudo systemctl is-enble docker.service shell> sudo systemctl disable docker.service shell> sudo systemctl disable containerd.service shell> sudo systemctl edit docker.service shell> sudo systemctl daemon-reload shell> sudo systemctl restart docker.service shell> sudo systemctl status docker shell> sudo netstat -lntp | grep dockerd ```