Docker安装

Ubuntu安装

1、确定cpu型号,如果是 arm 一般会显示 aarch64

#查看cpu架构信息
uname -a

docker支持的型号

ARM 和 X86_64

2、确定操作系统版本

#查看操作系统版本
cat /etc/*release*

docker支持的Ubuntu系统版本

Ubuntu Kinetic 22.10
Ubuntu Jammy 22.04 (LTS)
Ubuntu Focal 20.04 (LTS)
Ubuntu Bionic 18.04 (LTS)

3、卸载历史版本

执行docker version。如果存在就卸载历史版本,如果不存在 就不用这步操作

#卸载旧版本 
apt-get remove docker docker-engine

现在输入docker version,如果依旧还有docker,继续执行下面命令

#卸载历史版本
apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y

执行 ls /var/lib/docker/
检查docker的目录,如果存在,就把目录进行删除

执行命令

rm -rf /var/lib/docker

rm -rf /var/lib/containerd

4、配置docker源

#curl 命令安装
sudo apt install curl -y
#创建 gpg key 目录
sudo mkdir -m 0755 -p /etc/apt/keyrings
#下载 gpg key
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

#配置源
echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#更新源
apt update

5、执行安装命令

apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

6、自动启动配置

#配置加载
sudo systemctl daemon-reload 
#启动服务
sudo systemctl start docker 
#开启 开机自启动
sudo systemctl enable docker
#查看服务状态
sudo systemctl status docker

7、检查安装结果查看版本

#查看docker版本 
docker version
#更详细查看docker信息
docker info

8、执行 hello-world 可以看到 Hello from Docker,表面 docker 服务正常

sudo docker run hello-world

修改 镜像源

情况:下载镜像慢,调整下载的镜像源

创建或修改/etc/docker/daemon.json文件,修改为如下内容:

{
 "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

配置修改之后,加载配置

#加载配置
sudo systemctl daemon-reload
#重启服务
sudo systemctl restart docker

可以执行 docker info 命令进行检查,是否修成功。

目录修改

情况:下载镜像的目录存储不了镜像了,需要更大的磁盘空间,调整下载镜像的目录位置

#假定我们磁盘的大的目录为 /data
mkdir -p /data/var/lib/docker 
# 编辑配置文件
vi /etc/docker/daemon.json
# 输入下面的 json
{
    "data-root": "/data/var/lib/docker"
}
# 加载配置
sudo systemctl daemon-reload 
# 重启 docker
sudo systemctl restart docker 
#查看 docker 修改信息
docker info

Centos安装

1、确认操作系统

 cat /etc/*release*

支持的操作系统版本

CentOS 7 -- 停止更新已经不再支持
CentOS 8 (stream)
CentOS 9 (stream)

2、确认cpu架构

 uname -a

支持的cpu架构

ARM/X86_64

3、卸载旧版本

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

卸载历史版本

#删除机器上的包
yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

#执行卸载
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

#如果目录有进行过修改,修改后的目录也需要进行删除

4、配置仓库

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、安装最新版本

sudo yum install -y docker-ce

6、启动docker

#配置加载
sudo systemctl daemon-reload 
#启动服务
sudo systemctl start docker 
#开启 开机自启动
sudo systemctl enable docker
#查看服务状态
sudo systemctl status docker

7、检查安装结果查看版本

#查看版本
docker version
#查看docker更多信息
docker info

8、执行 hello-world 可以看到 Hello from Docker,表面 docker 服务正常

docker run hello-world

效果如下:

修改镜像源

创建或修改/etc/docker/daemon.json文件,修改为如下内容:

{
 "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

配置修改之后,加载配置

#加载配置
sudo systemctl daemon-reload
#重启服务
sudo systemctl restart docker

可以使用docker info查看是否修改成功

目录修改

#假定我们磁盘的大的目录为 /data
mkdir -p /data/var/lib/docker 
# 编辑配置文件
vi /etc/docker/daemon.json
# 输入下面的 json
{
    "data-root": "/data/var/lib/docker"
}
# 加载配置
sudo systemctl daemon-reload 
# 重启 docker
sudo systemctl restart docker 
#查看 docker 修改信息
docker info

镜像仓库

镜像仓库(Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力, 建立了仓库的索引。

镜像仓库管理多个 RepositoryRepository 通过命名来区分。每个 Repository 包含一 个或多个镜像,镜像通过镜像名称和标签 (Tag)来区分。

镜像中包含两部分,一部分为元数据,用于描述镜像属性,另一部分是实际存储数据的blob

镜像仓库结构如下

•   镜像仓库(Registry):要从哪一个镜像仓库拉取镜像,通常通过 DNS IP 地址来确 定一个镜像仓库如 hub.docker.com;一个 Registry 中可以存在多个 Repository·Repository 可分为顶层仓库用户仓库”;·用户仓库名称格式为用户名/仓 库名”·每个仓库可以包含多个 Tag(标签),每个标签对应一个镜像

•   Repository: ·由某特定的 docker 镜像的所有迭代版本组成的镜像仓库

•   镜像名称(name+标签(tag):nginx:latest

•   认证能力:提供用户注册,登录、登出能力

•   索引:提供镜像的索引信息,方便检索

一个容器镜像包含了两个部分,一个是元数据,其实就是由 dockerfile 构建出来的描 述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的 checksum 这些信息都会记录下来,还有最终的可执行文件在哪就是在存储数据里面, 就是在一个一个的 blob 里面,真正占有空间的就是这些 blob

镜像仓库命令

命令 别名 功能
docker login 登录仓库
docker pull
docker image pull
拉取镜像
docker push
docker image push
推送镜像
docker search 查找镜像
docker logout 登出仓库

docker login

功能

        登陆到一个 Docker 镜像仓库

语法

        docker login [OPTIONS] [SERVER]

参数

        -u :登陆的用户名

        -p :登陆的密码

比如

        docker login -u 用户名 -p 密码

docker pull

功能

        从镜像仓库中拉取或者更新指定镜像

语法

        docker pull [OPTIONS] NAME[:TAG|@DIGEST]

        别名        docker image pull

参数

        -a :拉取所有 tagged 镜像

        --disable-content-trust :忽略镜像的校验,默认开启

比如

        docker pull nginx:1.23.3

docker push

功能

        将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

语法

        docker push [OPTIONS] NAME[:TAG]

        别名        docker image push

参数

        -a :推送所有 tagged 镜像

        --disable-content-trust :忽略镜像的校验,默认开启

比如

        docker push myapache:v1

查看仓库

docker search

功能

        Docker Hub 查找镜像

语法

        docker search [OPTIONS] TERM

参数

        --no-trunc :显示完整的镜像描述;

        -f <过滤条件>:列出收藏数不小于指定值的镜像。

比如

        #从 Docker Hub 查找所有镜像名包含 nginx,并且 star 数大于 10 的镜像

        docker search -f stars=10 nginx

docker logout

功能

        登出一个 Docker 镜像仓库

语法

        docker logout [SERVER]

比如

        docker logout

镜像命令(部分)

docker images

功能

        列出本地镜像。

语法

        docker images [OPTIONS] [REPOSITORY[:TAG]]

        别名        docker image ls, docker image list

参数

        -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

        --digests :显示镜像的摘要信息

        -f :显示满足条件的镜像;

        --format :指定返回值的模板文件(json、table);

        --no-trunc :显示完整的镜像信息;

        -q :只显示镜像 ID

比如

        #列出本地全部镜像

        docker images

        #列出本地镜像中 REPOSITORY ubuntu 的镜像列表。

        docker images ubuntu

docker image inspect

功能

        查看镜像详细信息

语法

        docker image inspect [OPTIONS] IMAGE [IMAGE...]

比如

        #查看镜像详细信息

        docker images inspect nginx:1.23.3

docker tag

功能

        标记本地镜像,将其归入某一仓库。简单说就是给本地已存在的镜像再起一个名字,方便后续push、run或自己管理版本

语法

        docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

        别名        docker image tag

比如

        docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

让后将打完标签之后的镜像推送到仓库

仓库中就有了

容器命令(部分)

docker run

功能

        创建一个新的容器并运行一个命令

语法

        docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

        别名        docker container run

参数

        -d: 后台运行容器,并返回容器 ID

        -i: 以交互模式运行容器,通常与 -t 同时使用;

        -P: 随机端口映射,容器内部端口随机映射到主机的端口

        -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

        -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

        --name="nginx-lb": 为容器指定一个名称;

        -h "mars": 指定容器的 hostnam

        -e username="ritchie": 设置环境变量;

        --cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行;

        -m :设置容器使用内存最大值;

        --network="bridge": 指定容器的网络连接类型;

        --link=[]: 添加链接到另一个容器;

        --volume , -v: 绑定一个卷

        --rm :shell 退出的时候自动删除容器

比如

        #使用 docker 镜像 nginx:latest 以后台模式启动一个容器,并将容器命名为 mynginx。         docker run --name mynginx -d nginx:latest

        #使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主 机的 80 端口,主机的目录 /data 映射到容器的 /data

        docker run -p 80:80 -v /data:/data -d nginx:latest

docker ps

功能

        列出容器

语法

        docker ps [OPTIONS]

        别名        docker container ls, docker container list, docker container ps

参数

        -a :显示所有的容器,包括未运行的

        -f :根据条件过滤显示的内容

        --format :指定返回值的模板文件。如 json 或者 table

        -l :显示 latest 的容器。

        -n :列出最近创建的 n 个容器。

        --no-trunc :不截断输出。

        -q :静默模式,只显示容器编号。

        -s :显示总的文件大小。

比如

        docker ps -a

搭建一个nginx服务

Nginx 作为 Web 服务器可以向各种浏览器等客户端提供浏览服务,比如我们通过手机、 电脑、平板可以访问百度来实现对 web 服务器的访问

另外 Nginx 可以作为反向代理进行负载均衡的实现。

正向代理和反向代理

正向代理:由于防火墙的原因,我们并不能直接访问谷歌,那么我们可以借助 VPN 来实现,这就 是一个简单的正向代理的例子。这里你能够发现,正向代理“代理”的是客户端,而且客 户端是知道目标的,而目标是不知道客户端是通过 VPN 访问的。

反向代理:当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的 反向代理,即反向代理“代理的是服务器端,而且这一个过程对于客户端而言是透明的。

centos安装nginx

1、检查是否存在nginx

执行命令 ps -ef | grep nginx

2、移除nginx

如果存在就执行卸载 yum remove nginx

3、安装nginx

执行命令 

配置源

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

构建缓存

yum makecache

下载nginx

yum install -y nginx

4、启动和关闭nginx服务

查看nginx是否启动

ps -ef | grep nginx

如果没有启动,执行命令启动

systemctl start nginx

然后再次查看nginx是否启动

ps -ef | grep nginx

如果需要停掉nginx服务,可以使用

kill nginx服务进程

或者使用systemctl stop nginx

5、查看默认配置位置

默认配置

cat /etc/nginx/nginx.conf

首页位置

ls /usr/share/nginx/html

ubuntu安装nginx

1、检查服务器上有没有nginx

执行命令 ps -ef | grep nginx

2、如果有nginx,则需要进行卸载

查看nginx是否通过源安装

dpkg -l nginx

如果有内容就说明是通过apt源的方式进行的安装,如果使用remove卸载,只写卸载掉了软件包,但是配置并没有清理干净

执行命令

apt --purge autoremove nginx 能够干净的清理

3、安装nginx

执行命令

更新源

apt update

安装

apt install nginx -y

4、查看nginx是否启动

执行命令

ps -ef | grep nginx

如果已经启动了,需要手动启动,可以先关了,再进行手动启动

使用systemctl stop nginx 关掉nginx服务

然后在web端访问服务的ip,效果如下

5、修改首页内容

nginx的默认配置位置

cat /etc/nginx/nginx.conf

对这两个路径进行访问,第二个路径是一个软链接,编辑其内容,将/var/www/html/ 改为/usr/share/nginx/html

nginx主页位置

/usr/share/nginx/html

编辑index.html进行修改

修改效果如下

查找nginx镜像

选取一个认证过的,带版本号,而且是没有技术漏洞的镜像作为基础镜像。这里选取nginx:1.24.0作为基础镜像

1、拉取镜像

docker pull nginx:1.24.0

2、查看镜像的详细信息

docker image inspect nginx:1.24.0

3、启动nginx

docker run -p 8093:80 --name myweb13 -h myweb1.com -e myenv=test -it nginx:1.24.0 bash

这行命令是指宿主机端口8093映射到容器的80端口,容器名为myweb13,容器的hostname为myweb1.com,设置了一个环境变量为myenv=test,并在运行时提供交互式功能和伪终端。执行bash,但是并未启动nginx。需要手动启动

在web端访问

4、调整首页

进入主页目录,执行命令        cd /usr/share/nginx/html/

对主页进行调整,执行命令        echo "hello docker" > index.html

在web端访问

docker hub上创建自己的私有仓库

busybox

BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。BusyBox 包含了一 些简单的工具,例如 lscat echo 等等,还包含了一些更大、更复杂的工具,例 grep、findmount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。 简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也 包含了 Linux 系统的自带的 shellbusybox 是一个集成了一百多个最常用 linux 命令和 工具的软件,他甚至还集成了一个 http 服务器和一个 telnet 服务器,而所有这一切功能却 只有区区 1M 左右的大小.因海外带宽较小,我们拉取该镜像推送到自己的仓库。

安装

检查是否存在busybox,如果有就先卸载

卸载命令        apt --purge autoremove busybox

下载busybox

下载命令   wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificate

改名,并赋予可执行权限

改名        mv busybox-x86_64 busybox

赋予可执行权限        chmod +x busybox

推送镜像

在上传之前,需要先登录docker

在hub.docker.com上拉取busybox        docker pull busybox:1.37.0

对拉取下的busybox标签进行修改        docker tag busybox:1.37.0 hzpxx/hzptest:v1.0

然后再推送至个人仓库        docker push hzpxx/hzptest:v1.0

在hub.docker.com仓库中查看

腾讯云创建自己的私有仓库

阿里云创建自己的私有仓库

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐