一、镜像安装
我的docker安装在centos7虚拟机上(关于虚拟机网络设置此前已有总结VMware 搭建centos虚拟机网络设置_vmware centos 网络配置-CSDN博客),现在默认操作系统和网络已就位。
1、安装工具包
# 安装操作一般都需要管理员权限,直接切换
sudo su root
# 安装包管理工具
yum install -y yum-utils
2、配置远程仓库
# 这个操作会将docker-ce.repo复制到/etc/yum.repos.d/目录
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
这句命令实质就是将docker-ce.repo文件复制到本机的/etc/yum.repos.d/目录下,这个文件的内容就是指定各种资源所在的链接。
3、安装
yum install docker-ce
4、启动
# 启动
systemctl start docker
# 查看docker版本
docker version
注意:配置和安装需要访问网络资源,官网容易下载失败,可多次尝试或更换国内镜像源。
5、补充-Ubuntu系统安装docker
5.1 直接从Ubuntu的官网下载安装
# 1、更新Ubuntu系统软件列表 apt-get 和 apt 是一样的
sudo apt update
# 2、安装
sudo apt install docker.io docker-compose
5.2 从docker官网下载安装
# 1、更新软件包列表
sudo apt update
# 2、安装一些必要的基础依赖工具
sudo apt install ca-certificates curl gnupg lsb-release
# 3、创建一个目录存放密钥
sudo install -m 0755 -d /etc/apt/keyrings
# 4、将官网的密钥下载放在上一步创建的路径
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 5、赋予所有人这个密钥的可读权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 6、添加docker的apt源(就是各种地址)到本地。这一长串命令拆解开来,arch后面跟的是处理器型号,如amd64;然后指定密钥;然后是官网地址stable版本,最后就是将获取到的内容写入docker.list中
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 7、再次更新
sudo apt update
# 8、安装docker及相关组件
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 查看版本
docker -v
二、镜像创建
docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、资源、配置等文件。简单理解就是一个虚拟机,包含基础操作系统,这个系统里你可以安装其他的依赖。而镜像一旦创建,不可修改,即所有文件都是“只读”。因此,如果想要修改镜像配置,只能重新创建一个。而为了表示这两个镜像之间的继承关系,一般可以采用版本号进行表示,如algo:v1,algo:v2。
1、基于Dockerfile创建镜像
(1)编写Dockerfile
# 主机创建一个项目目录,存放各种资料文件
mkdir docker_test
cd docker_test
# 新建一个文件
vim Dockerfile
Dockerfile里输入的内容如下:
# 基于官方模板创建镜像,包含python3.7
FROM python:3.7
# 设置工作目录,生成的镜像会默认创建这个目录
WORKDIR /docker_test
# 将docker_test下的app文件夹复制到镜像
COPY ./app /docker_test/app
# 镜像操作,一般是安装各种依赖,多个命令用 && 连接
RUN pip install -r /app/require.txt && yum install xx
# 也可以再写一个RUN命令
RUN yum install xxx
# 指定启动容器时需要执行的命令,只能有一条
CMD ["pthon", "/app/app.py"]
目录结构如下:
注意:每执行一次RUN,镜像就会多增加一层,有点像洋葱。执行一次RUN命令,新的镜像就会在原来的镜像上套一层,层数是有限制的。而这样设计的好处就是,如果最后一层坏了(执行出错),再次生成镜像时,会基于倒数第二层开始执行,即只执行最后一句。
(2)基于Dockerfile生成镜像
# . 表示基于当前目录下Dockerfile生成,image_name为自定义的镜像名字
docker build -t image_name .
# 查看生成的镜像
docker images
三、容器
容器是镜像的实例,此时的文件系统将变成“可写”。一个镜像可以生成多个容器,在不同容器中,可以指定不同的依赖版本。
1、创建容器
# 创建名为my_container的容易,基于image_name镜像,并设置容器内的端口和主机端口的映射
docker run --name container_name -p 10001:10001 -p 10002:10002 -it image_name /bin/bash
2、复制文件到容器
# 从主机复制到指定容器的指定位置
docker cp /docker_test/app container_name:/docker_test
3、进入容器
docker exec -it container_name /bin/bash
4、退出容器
# 容器停止运行
exit
# 容器继续运行,回到主窗口
先 Ctrl + P 再 Ctrl + Q
5、启动容器
进入容器的前提是容器已运行
# 重启就是restart
docker start my_container
6、查看依赖某个镜像的所有容器信息
docker ps -a --filter ancestor=image_name
注意:以上命令中的容器或镜像名称都可以使用对应id代替。
四、离线安装
如果实际部署的设备无法连接外网,则需要将事先建立的镜像(可基于上述步骤)移植到生产设备。
1、使用安装包安装docker
# 官网下载地址https://download.docker.com/linux,根据对应操作系统和处理器选择版本下载
sudo yum localinstall <安装包名称>.rpm
# 启动
sudo systemctl start docker
2、保存本地生成的镜像
# 保存
docker save -o <镜像文件名>.tar <镜像名>:<版本>
3、加载镜像
# 将<镜像文件名>.tar文件拷贝到目标设备,然后执行
docker load -i <镜像文件名>.tar
4、运行
docker run -d <镜像名>:<版本>
五、卸载docker
1、停止所有容器
sudo docker stop $(sudo docker ps -aq)
2、删除所有容器
sudo docker rm $(sudo docker ps -aq)
3、卸载软件包
# ubuntu系统
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# centos
sudo yum remove docker-ce docker-ce-cli containerd.io
4、删除相关文件和目录
# 其他目录根据实际情况操作
sudo rm -rf /var/lib/docker