1. 首先使用下面命令安装需要的软件包:
sudo yum install -y yum-utils
2. 设置稳定的Docker存储库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3. 安装Docker引擎:
sudo yum install docker-ce docker-ce-cli containerd.io
4. 启动Docker服务:
sudo systemctl start docker
5. 设置开机自启Docker服务:
sudo systemctl enable docker
6. 测试Docker是否安装成功:
sudo docker run hello-world
7. 可选步骤,为了避免每次运行Docker时必须使用sudo,可将用户加入docker组:
sudo groupadd docker
sudo usermod -aG docker $USER
然后重启系统让更改生效。
按照以上步骤,您就可以在RedHat Linux系统上安装并使用Docker了。
要创建一个新的Docker镜像,通常有两种方式:
1. 通过编写Dockerfile构建
Dockerfile是一个文本文档,用户可以在其中指定构建镜像所需执行的命令。常用的命令有:
- FROM 指定基础镜像
- RUN 执行指令,比如安装软件包
- COPY 复制文件到镜像
- ENV 设置环境变量
- CMD 设置默认执行的命令
编写好Dockerfile后,使用`docker build`命令从中构建镜像:
docker build -t 新镜像名称:版本号 Dockerfile所在路径
例如:
docker build -t myapp:1.0 .
2. 基于已有容器创建
先运行一个容器,做一些修改和安装,然后使用`docker commit`将容器保存为新镜像:
docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]
例如:
docker commit -a "作者" -m "描述信息" containerID myapp:v2
通过上述两种方式,就可以构建出定制化的Docker镜像。推荐使用Dockerfile的方式,它更加透明化,易于维护和版本控制。创建镜像后,就可以基于该镜像创建容器,或者推送到Docker Hub供他人下载使用了。
下面是一个基于CentOS 7的Dockerfile示例:
dockerfile
# 基础镜像使用CentOS 7
FROM centos:7
# 设置工作目录
WORKDIR /app
# 更新yum源并安装必要软件包
RUN yum update -y && \
yum install -y wget unzip && \
yum clean all
# 如果需要安装其他软件包,在这里添加安装命令
# 例如安装Java:
# RUN yum install -y java-1.8.0-openjdk
# 如果需要添加文件到镜像,使用COPY命令
# COPY ./your-app.jar /app
# 设置环境变量
# ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0
# 设置暴露端口(如有需要)
# EXPOSE 8080
# 设置默认启动命令
CMD ["/bin/bash"]
以上Dockerfile包含了:
1. 设置基础镜像为CentOS 7
2. 设置工作目录为 /app
3. 更新yum源并安装wget,unzip等软件包
4. 给出了如何安装其他软件(如Java)的注释示例
5. 如何复制文件到镜像的注释示例
6. 如何设置环境变量的注释示例
7. 如何暴露容器端口的注释示例
8. 设置默认启动bash shell
您可以根据实际需求,修改和扩展该Dockerfile。比如安装您需要的软件包,复制您的应用文件,设置正确的环境变量和暴露端口等。
编写好后,保存为Dockerfile文件,就可以通过`docker build`命令构建镜像了。
目前使用的Dockerfile
FROM centos:7
WORKDIR /dev/env
RUN yum update -y && \
yum install -y wget unzip && \
yum install -y vim && \
yum install -y net-tools && \
yum install -y psmisc && \
yum install -y gdb && \
yum install -y libpcap-devel && \
yum install -y git && \
yum install -y epel-release && \
yum install -y cmake3 && \
yum install -y make && \
yum install -y gcc gcc-c++ && \
yum install -y sudo && \
yum install -y rpm-build && \
yum install -y zlib-devel && \
yum clean all
EXPOSE 8080
CMD ["/bin/bash"]
下面是一个运行centos7:0.0.1镜像时可以使用的、最全面的docker run命令示例:
docker run -d \
--name mycentos \
--restart=always \
--net=host \
-p 80:80 \
-p 8080:8080 \
-v /data:/app/data:rw \
-v /etc/timezone:/etc/timezone:ro \
-e TZ=Asia/Shanghai \
-e LANG=zh_CN.UTF-8 \
--cpus=2 \
--memory=4g \
--memory-swap=4g \
--oom-kill-disable \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--ulimit nofile=1024000:1024000 \
centos7:0.0.1 \
/app/startup.sh
上面命令中包含了一些常用和高级的选项,具体解释如下:
- -d: 以分离模式(detached)在后台运行容器
- --name mycentos: 给容器指定名称为mycentos
- --restart=always: 设置当容器退出时,Docker总是重启容器
- --net=host: 使用host网络模式,容器共享宿主机网络栈
- -p 80:80 -p 8080:8080: 将容器的80和8080端口映射到宿主机同端口
- -v /data:/app/data:rw: 将宿主机/data目录映射为容器/app/data目录,读写模式
- -v /etc/timezone:/etc/timezone:ro: 将宿主机时区映射为容器时区,只读模式
- -e TZ=Asia/Shanghai: 设置容器时区为亚洲/上海
- -e LANG=zh_CN.UTF-8: 设置语言环境为中文
- --cpus=2: 限制容器使用2个CPU核心
- --memory=4g: 限制容器使用4GB内存
- --memory-swap=4g: 设置容器使用交换分区的内存上限为4GB
- --oom-kill-disable: 禁用OOM(内存不足)时杀死容器
- --cap-add=SYS_PTRACE: 添加授权容器syscall调试能力
- --security-opt seccomp=unconfined: 关闭容器默认seccomp安全策略
- --ulimit nofile=1024000:1024000: 设置容器可打开文件数上限
- centos7:0.0.1: 要运行的镜像名称和标签
- /app/startup.sh: 容器启动后要执行的命令或脚本
这个全面的示例集成了运行模式、资源限制、文件映射、环境变量设置等诸多高级选项,可以满足大多数生产环境容器的运行需求。使用时可根据实际情况选用所需部分。通过调整参数可以对容器资源使用、持久化数据、调试等方面进行个性化设置。
Docker Hub是一个用于存储和共享Docker容器的云服务平台。以下是一些基本步骤,以帮助你使用Docker Hub:
1. 注册 Docker Hub 帐号
首先,你需要在[Docker Hub网站](https://hub.docker.com/)上注册一个帐号。点击 "Sign Up" 按钮,填写必要的信息来创建你的 Docker Hub 帐号。
2. 安装 Docker
确保你的计算机上已经安装了 Docker。你可以在[Docker官方网站](https://www.docker.com/get-started)上找到适用于你操作系统的安装说明。
3. 登录 Docker Hub
在终端或命令提示符中,使用以下命令登录到 Docker Hub。你将需要提供你在 Docker Hub 上注册时使用的用户名和密码。
docker login
4. 构建 Docker 镜像
构建你的 Docker 镜像,可以通过创建一个 `Dockerfile` 文件并运行 `docker build` 命令来实现。确保在 `Dockerfile` 所在的目录中执行以下命令:
docker build -t your_username/your_image_name:tag .
这会将你的 Docker 镜像构建并打上标签。`your_username` 是你在 Docker Hub 上的用户名,`your_image_name` 是你为你的镜像选择的名称,`tag` 是你给该版本的标签。最后的点 `.` 表示使用当前目录的内容作为构建上下文。
5. 推送 Docker 镜像到 Docker Hub
一旦你的镜像构建完成,使用以下命令将其推送到 Docker Hub:
docker push your_username/your_image_name:tag
这将把你的 Docker 镜像上传到 Docker Hub。
6. 从 Docker Hub 拉取镜像
在另一台机器或服务器上,你可以使用以下命令从 Docker Hub 拉取你的镜像:
docker pull your_username/your_image_name:tag
7. 运行容器
使用以下命令在本地运行你的 Docker 镜像:
docker run -d -p 8080:80 your_username/your_image_name:tag
以上命令假设你的容器将应用程序的端口 80 映射到主机的端口 8080。你可以根据你的应用程序和需求进行调整。
这些是使用 Docker Hub 的基本步骤。你可以在 Docker Hub 上查看和管理你的镜像,以及与其他开发者共享你的容器。