本文介绍如何在Linux实例上部署Docker,以及Docker常用操作和镜像制作过程。
Docker是一个开源应用容器引擎,可以将应用程序及其依赖项打包到可以在任何Linux、Windows或macOS计算机上运行的虚拟容器中,使应用程序能够在各种位置运行,如本地、公有云或私有云。更多信息请访问 Docker docs获取。
Docker 主要组成部分如下:
Linux 操作系统:本文以 CentOS Stream 9 为例。
执行以下命令,添加 yum 源。
yum update -y yum install epel-release -y yum clean all yum list
依次执行以下命令,添加Docker CE镜像源。更多操作请参考Docker CE镜像。
# 安装必要的一些系统工具 sudo yum install -y yum-utils # 添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.ivolces.com/docker/linux/centos/docker-ce.repo sudo sed -i 's+download.docker.com+mirrors.ivolces.com/docker+' /etc/yum.repos.d/docker-ce.repo # 更新并安装Docker-CE sudo dnf makecache --refresh sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
执行以下命令,运行 Docker。systemctl start docker
执行以下命令,确认 Docker 安装情况。docker info
返回如下信息,即为安装成功。
systemctl start docker #运行 Docker 守护进程 systemctl stop docker #停止 Docker 守护进程 systemctl restart docker #重启 Docker 守护进程
拉取镜像
本文以 Docker Hub 的 ubuntu 镜像为例。docker pull ubuntu
查看已有镜像docker images
强制删除镜像docker rmi -f ubuntu
删除后,可通过docker images
查看目标镜像是否成功删除。
进入容器docker run -it ImageId /bin/bash
其中,ImageId
可通过执行docker images
命令获取。
退出容器
执行exit
命令,退出当前容器。
后台运行容器docker run -d --name ubuntu ImageId
--name
指定容器名称为 ubuntu。
进入后台运行的容器docker exec -it 容器 ID /bin/bash
其中,容器 ID
可通过执行docker ps
命令获取。
将容器做成镜像docker commit <容器 ID 或容器名> [<仓库名>[:<标签>]]
例如:docker commit 097fdd5e**** dockertest/ubuntu:latest
执行以下命令,创建并编辑 Dockerfile 文件vim Dockerfile
按i
进入编辑模式,添加以下内容。
FROM nginx RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
Dockerfile 指令介绍如下。以下仅介绍简单指令,如需了解更多,请参见官方网站。
按下 Esc 键,输入:wq
并按下 enter 键,保存并退出 Dockerfile 文件。
执行以下命令,构建镜像。
docker build -t nginx:v1 . # . 是 Dockerfile 文件的路径,不能忽略 docker images #查看是否创建成功
执行以下命令,运行容器并查看。
docker run -d nginx:v1 #后台运行容器 docker ps #查看当前运行中的容器 docker ps -a #查看所有容器,包括未运行的容器 docker logs CONTAINER ID/NAMES #如未查看到刚才运行的容器,则用容器 ID 或者名字查看启动日志排错
执行以下命令,制作镜像。
docker commit bd0d3e7e**** nginxtest:v1 #commit 参数后添加容器 ID 和构建新镜像的名称和版本号。 docker images #列出本地(已下载的和本地创建的)镜像。
将镜像推送至远程仓库。
默认推送到 Docker Hub。您需要先登录 Docker,为镜像绑定标签,将镜像命名为Docker 用户名/镜像名:标签
的格式。最终完成推送。
docker login docker tag [ImageId] [Docker 用户名]/[镜像名]:[标签] docker push [Docker 用户名]/[镜像名]:[标签]
登录 dockerhub 查看。