docker的使用
qinsz 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
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
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
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
2
如果是ARM架构的计算机,将上述[arch=amd64]替换为[arch=arm64]即可
# 4. 安装Docker社区版
$ sudo apt update
$ sudo apt install docker-ce
1
2
2
# 5、添加镜像加速
因为政策原因,无法直接访问docker镜像,使用第三方平台提供的镜像加速源头。 这里以阿里云的镜像加速服务为力。
- 登录阿里云,进入“容器镜像服务”->“镜像工具”->“镜像加速器”获取加速地址
- 创建/etc/docker/daemon.json文件并加入如下内容:
{
"registry-mirrors": ["你的镜像加速地址"]
}
1
2
3
2
3
- 保存退出json文件,在终端中执行如下指令重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
1
2
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