Linux下安装使用Docker

一、Docker介绍 [官网:https://www.docker.com]

引用知乎@刘允鹏回答:Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。

docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。

Docker及系统版本

Docker 使用Go 编程语言编写,并利用 Linux 内核的多个特性来提供其功能。Docker 使用一种称为容器namespaces的技术来提供隔离的工作空间。当您运行容器时,Docker 会 为该容器创建一组命名空间。

这些命名空间提供了一层隔离。容器的每个方面都在单独的命名空间中运行,并且其访问仅限于该命名空间。

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L6Qci7JD-1691564753689)(img\Docker架构.png)]**

  • Client(客户端):是Docker的用户端,可以接受用户命令和配置标识,并与Docker daemon通信。
  • Images(镜像):是一个只读模板,含创建Docker容器的说明,它与操作系统的安装光盘有点像。
  • Containers(容器):镜像的运行实例,镜像与容器的关系类比面向对象中的类和对象。
  • Registry(仓库):是一个集中存储与分发镜像的服务。最常用的Registry是官方的Docker Hub 。

Docker从17.03版本之后分为CE(Community Edition: 社区版)和EE(Enterprise Edition: 企业版)。相对于社区版本,企业版本强调安全性,但需付费使用。这里我们使用社区版本即可。Docker支持64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10。

本文演示使用的是阿里云免费试用的1核2GB 云服务器 ECS,CentOS8.4 系统,内核版本为4.18。

查看Linux版本的命令这里推荐两种:lsb_release -acat /etc/redhat-release

[root@aliyun ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 8.4.2105
Release:	8.4.2105
Codename:	n/a
[root@aliyun ~]# cat /etc/redhat-release
CentOS Linux release 8.4.2105

查看内核版本有三种方式:cat /proc/versionuname -auname -r
三种形式都可以查看到内容版本,比如:

[root@aliyun ~]# cat /proc/version
Linux version 4.18.0-305.3.1.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.4.1 20200928 (Red Hat 8.4.1-1) (GCC)) #1 SMP Tue Jun 1 16:14:33 UTC 2021
[root@aliyun ~]# uname -a
Linux aliyun 4.18.0-305.3.1.el8.x86_64 #1 SMP Tue Jun 1 16:14:33 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@aliyun ~]# uname -r
4.18.0-305.3.1.el8.x86_64

安装Docker

官方安装文档:https://docs.docker.com/engine/install/centos/

注意:更换镜像源站为阿里云

1.Docker的自动化安装

Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。

官方的一键安装方式:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

国内 daocloud一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

执行上述任一条命令,耐心等待即可完成Docker的安装。
建议初学者以手动安装为主,进行学习。

2.Docker手动安装

手动安装Docker分三步:卸载、设置仓库、安装。

2.1.卸载Docker(可选)

第一步,卸载历史版本。这一步是可选的,如果之前安装过旧版本的Docker,可以使用如下命令进行卸载:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

yum可能会报告您没有安装这些软件包。

/var/lib/docker/卸载 Docker 时,不会自动删除存储的映像、容器、卷和网络。

2.2. 安装必要的一些系统工具

在设置仓库之前,需先安裝所需的软件包。yum-utils提供了yum-config-manager,并且device mapper存储驱动程序需要device-mapper-persistent-data和lvm2。

yum install -y yum-utils device-mapper-persistent-data lvm2
2.3. 设置源仓库
  • 使用官方源地址:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

通常,官方的源地址比较慢,可将上述的源地址替换为国内比较快的地址:

  • 使用阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

仓库设置完毕,即可进行Docker的安装。

2.4.Docker安装

执行一下命令,安装最新版本的 Docker Engine-Community 和 containerd。

  1. 执行缓存

    yum makecache fast
    
  2. 执行安装最新社区版docker

    yum install docker-ce
    

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。但安装完成之后的默认是未启动的,需要进行启动操作。

  • 如需要docker-ce-cli或containerd.io或docker-buildx-plugin 或 docker-compose-plugin可执行如下命令:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

如果提示接受 GPG 密钥,请验证指纹是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果匹配,则接受。

此命令会安装 Docker,但不会启动 Docker。它还创建一个 docker组,但是默认情况下不会将任何用户添加到该组。

  • 要安装特定版本,请首先列出存储库中的可用版本:
yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64    3:24.0.0-1.el8    docker-ce-stable
docker-ce.x86_64    3:23.0.6-1.el8    docker-ce-stable
<...>

返回的列表取决于启用的存储库,并且特定于您的 CentOS 版本(.el8在本示例中由后缀表示)。

通过完全限定的包名称安装特定版本,即包名称 ( docker-ce) 加上版本字符串(第二列),并用连字符 ( -) 分隔。例如,docker-ce-3:24.0.0-1.el8.

替换<VERSION_STRING>为所需的版本,然后运行以下命令进行安装:

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin

此命令会安装 Docker,但不会启动 Docker。它还创建一个 docker组,但是默认情况下不会将任何用户添加到该组。

至此,完成Docker安装。

3.Docker启动

3.1.启动Docker的命令:
systemctl start dockerservice docker start

#设置开机自启命令
systemctl enable docker
#查看docker版本命令
docker version

Docker 找不到/etc/docker/daemon.jsonsystemctl start docker报错问题解决

[root@aliyun ~]# systemctl start docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

于是访问官网:docker官网配置deamon

看到下面一句话:

To configure the Docker daemon using a JSON file, create a file at /etc/docker/daemon.json on Linux systems, or C:\ProgramData\docker\config\daemon.json on Windows. On MacOS go to the whale in the taskbar > Preferences > Daemon > Advanced.

翻译一下就是:使用json配置 Docker daemon,请在linux系统创建/etc/docker/daemon.json。

vim /etc/docker/daemon.json

按i写入下面内容:
{
  "registry-mirrors": ["https://elzciopd.mirror.aliyuncs.com"]
}
按esc 键入:wq保存退出

# 重载配置
sudo systemctl daemon-reload
# 重启docker服务
sudo systemctl restart docker
3.2.通过运行镜像来验证Docker Engine安装是否成功 hello-world
sudo docker run hello-world

此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条确认消息并退出。

除了启动Docker,一些其他启动相关的命令:

  • 安装校验: docker version
  • 守护进程重启:systemctl daemon-reload
  • 重启Docker服务:systemctl restart docker / service docker restart
  • 关闭Docker服务:docker service docker stop / docker systemctl stop docker

4.刪除docker

删除安装包:

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

5.Docker其他常见命令

安装完成Docker之后,这里汇总列一下常见的Docker操作命令:

  • 搜索仓库镜像:docker search 镜像名

  • 拉取镜像:docker pull 镜像名

  • 查看正在运行的容器:docker ps

  • 查看所有容器:docker ps -a

  • 删除容器:docker rm container_id

  • 查看镜像:docker images

  • 删除镜像:docker rmi image_id

  • 启动(停止的)容器:docker start 容器ID

  • 停止容器:docker stop 容器ID

  • 重启容器:docker restart 容器ID

  • 启动(新)容器:docker run -it ubuntu /bin/bash

  • 进入容器:docker attach 容器ID或docker exec -it 容器ID /bin/bash,推荐使用后者。
    更多的命令可以通过docker help命令来查看。

  • Docker 常用命令

    拉取镜像docker pull
    删除容器docker rm <容器名 or ID>
    查看容器日志docker logs -f <容器名 or ID>
    查看正在运行的容器docker ps(docker ps -a # 为查看所有的容器,包括已经停止的)
    删除所有容器docker rm $(docker ps -a -q)
    启动指定容器、停止指定容器、杀死指定容器docker start <容器名 or ID> # 启动容器;docker stop <容器名 or ID> # 停止容器;docker kill <容器名 or ID> # 杀死容器
    查看所有镜像docker images
    拉取镜像docker pull <镜像名:tag>eg:以下代码 docker pull sameersbn/redmine:latest
    后台运行docker run -d eg:docker run -d -p 127.0.0.1:33301:22 centos6-ssh
    暴露端口一共有三种形式进行端口映射docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口eg:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口 docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口eg:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口 docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口eg:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口
    映射数据卷docker -v /home/data:/opt/data(这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址)

6.安装Docker可视化管理工具Portainer

6.1搜索镜像
docker search portainer
6.2拉取镜像
#拉取镜像命令
docker pull portainer/portainer
#查看镜像命令
docker images
6.3运行镜像(启动Portainer容器)
#创建数据卷
docker volume create portainer_data
#启动容器
docker run -d -p 9000:9000 --restart=always --name prtainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
#查看启动中的容器
docker ps

启动参数说明:

-it  输出容器命令行的内容 即容器的自身的程序输出在控制台 有点类似前台运行
-d  和it相反  隐藏后台运行
-p  端口映射 9000::9000 外部(宿主机)端口:镜像里面运行的端口 将宿主机9000端口映射到镜像里面的9000端口
--restart  重启方式:always跟随docker自启
--name  启动后的容器名称
-v  挂载容器数据卷
--network  连接到某个网络(例如:--network test_net)
--network-alias  容器的网络名称(例如:--network-alias portainer)
6.4访问Portainer客户端

访问地址:http://服务器公网ip:9000,首次访问需要设置admin管理员登录密码

登录页

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OCoAvqD4-1691564753690)(img\Portainer登录页.png)]**

开始使用

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxDLc5i0-1691564753690)(img\Portainer首页.png)]**

控制台

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wN2ZdMS2-1691564753691)(img\Portainer控制台.png)]**

容器管理

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUhZpikJ-1691564753691)(img\容器管理.png)]**

注意:要设置阿里云服务器放行端口9000

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxcbiu9q-1691564753692)(img\配置安全组规则放行9000端口.png)]**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值