docker的使用

1/16/2024 ubuntudocker

# 一、 安装Docker

以下是安装docker-ce(社区版)的步骤。

# 1. 工具下载

安装Docker时需要使用到下面的工具。

$ sudo apt install \ 
  apt-transport-https \
  ca-certificates \
  curl \
  software-properties-common
1
2
3
4
5

PS: 指令中的""可以实现在指令中进行换行,这里仅为了方便展示,实际操作时可以不用“\”进行换行。

# 2. 安装GPG证书

使用curl工具将下载的证书内容添加到apt包管理器的信任列表。注意命令最后的短横线“-”不要缺失,短横线表示向apt-key add 传递的是证书内容,而不是证书文件地址。添加完成后,可以通过apt-key list查看所有的公钥信息。

$ curl -fsSL \
 https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \ 
  | sudo apt-key add -
1
2
3

在ubuntu22.04系统中上述添加证书的方式会出现apt-key被弃用的警告(不影响正常使用),要避免警告可以使用下面的管理方式:

$ curl -fsSL \
 https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
  | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
1
2
3

# 3. 添加Docker稳定版仓库地址

$ sudo add-apt-repository \
 "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
1
2

如果是ARM架构的计算机,将上述[arch=amd64]替换为[arch=arm64]即可

# 4. 安装Docker社区版

$ sudo apt update
$ sudo apt install docker-ce
1
2

# 5、添加镜像加速

因为政策原因,无法直接访问docker镜像,使用第三方平台提供的镜像加速源头。 这里以阿里云的镜像加速服务为力。

  • 登录阿里云,进入“容器镜像服务”->“镜像工具”->“镜像加速器”获取加速地址
  • 创建/etc/docker/daemon.json文件并加入如下内容:
{
  "registry-mirrors": ["你的镜像加速地址"]
}
1
2
3
  • 保存退出json文件,在终端中执行如下指令重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
1
2

# 二、基本指令

# 1. 从镜像仓库查找镜像

image_name_keywords表示你要查找的仓库名称关键字

$ sudo docker search image_name_keywords
1

# 2. 从镜像仓库拉取镜像到本地

$ sudo docker pull image_name:tag_name
1
  • image_name表示镜像名称
  • tag_name表示需要拉取的该镜像的版本号,可以省略tag_name及其前面的冒号,则表示拉取latest版本

# 3. 查看本地所有的镜像

$ sudo docker images
1

# 4. 删除本地镜像

$ sudo docker rmi image_name
1

image_name为需要删除的本地镜像名称,也可以将其替换为本地镜像的id号。

# 5. 创建容器

$ sudo docker create --name my_container -p 8080:80 -v my_volume:/opt/share image_name
1
  • --name my_container表示为容器命名为my_container
  • -p 8080:80表示将宿主计算机的8080端口映射到容器的80端口。意味着所有访问宿主计算机8080端口的请求都会被转发到容器的80端口。
  • -v my_volume:/opt/share表示将提前创建好的名为my_volume的数据卷(挂载点)与容器内部的/opt/share路径进行映射。my_volume也可以替换为宿主计算机中的某个路径比如/home/cqcet/my_path。
  • 末尾的image_name表示镜像名称,如果本地没有同名的镜像,那么docker就会尝试从镜像仓库去拉取(pull)

# 6. 启动容器

$ sudo docker start -i my_container
1
  • -i表示交互式启动名为my_container的容器。容器内的所有标准输出会输出到当前的终端,但如果此时通过ctrl+c的方式退出与容器的交互,那么容器也会停止。
  • 不写-i参数则容器会在后台运行。

# 7. 创建并启动容器

可以通过run指令实现容器的创建并启动。

$ sudo docker run -d -p 8080:80 -v my_volume:/opt/share --name my_container image_name
1
  • -d表示启动容器并让其在后台运行,不写该参数那么会运行到前台,用户通过ctrl+c的方式退出交互后,容器也会同步终止
  • -p 8080:80表示将宿主计算机的8080端口映射到容器的80端口。意味着所有访问宿主计算机8080端口的请求都会被转发到容器的80端口。
  • -v my_volume:/opt/share表示将提前创建好的名为my_volume的数据卷(挂载点)与容器内部的/opt/share路径进行映射。my_volume也可以替换为宿主计算机中的某个路径比如/home/cqcet/my_path。
  • --name my_container表示创建的新容器的名称为my_container
  • 末尾的image_name表示镜像名称,如果本地没有同名的镜像,那么docker就会尝试从镜像仓库去拉取(pull)

# 8. 停止容器

$ sudo docker stop my_container
1
  • my_container表示容器名称,也可以替换为容器的id号。

# 9. 删除容器

$ sudo docker rm my_container
1
  • my_container表示容器名称,也可以替换为容器的id号。

# 三、其它指令

# 1. 重要:exec指令

# 1.1 令正在运行的容器执行一条指令。以创建路径(文件夹)为例。

在容器内部的/opt路径下创建一个my_folder文件夹

$ sudo docker exec my_container mkdir /opt/my_folder
1

# 1.2 "登录"到容器

$ sudo docker exec -it my_container /bin/bash
1
  • 本质上是向正在运行的容器发送了一条指令"/bin/bash"(即,运行bash解释器)。然后使用-it参数将输入输出接入到伪终端,达到"登录"到容器的效果。

# 2. 重要:查看容器日志

# 2.1 基本使用。

$ sudo docker logs my_container
1
  • my_container表示要查看日志的容器名称,也可以替换为该容器的id号。

# 2.2 查看末尾20行日志

$ sudo docker logs --tail 20 my_container
1

# 2.3 查看实时日志。(容器正在运行的状态下有效)

$ sudo docker logs -f my_container
1

# 2.4 查看末尾20行的实时日志。(容器正在运行的状态下有效)

$ sudo docker logs --tail 20 -f my_container
1
Last Updated: 6/23/2024, 11:11:06 AM