Docker:

  • 菜鸟教程描述的很详细,以下是自己手动安装过程记录和问题补充。
  • 菜鸟教程:https://www.runoob/docker/centos-docker-install.html

文章目录

  • Docker:
  • 1. docker安装
  • 2. docker安装nginx
  • 3. nginx容器.conf文件配置

1. docker安装

  • 卸载旧版本
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 安装 Docker Engine-Community
  • 使用 Docker 仓库进行安装
    在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。从仓库安装和更新 Docker。
  • 设置仓库
    安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  • 设置yum源-阿里云
$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun/docker-ce/linux/centos/docker-ce.repo

  • error: 这里我设置的yum源有报错:Error: Failed to download metadata for repo 'AppStream'
# cd /etc/yum.repos.d/
# cp CentOS-Base.repo /home/
# rm CentOS*   --谨慎操作,这里只保留CentOS-Base.repo文件。
# 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun/repo/Centos-vault-8.5.2111.repo
# yum clean all && yum makecache  --清理缓存&&生成缓存
  • yum源不删除的解决方法,这位博主说的好:我们要养成修改内容时使用注释而不是删除的操作方法,用来对比前后差异,出问题了取消掉注释就可以了。
    https://wwwblogs/bpzblog/p/13918199.html
  • 将更新后的CentOS-Base.repo文件中的[AppStream]模块更新至CentOS-AppStream.repo文件中。

  • 安装 Docker Engine-Community
    安装最新版本的 Docker Engine-Community 和 containerd
$ sudo yum install docker-ce docker-ce-cli containerd.io

  • error: centos8 podman 冲突问题

# rpm -qa podman  --查看podman版本
# dnf remove podman  --卸载
# yum install docker-ce docker-ce-cli containerd.io


  • 启动docker
$ sudo systemctl start docker

2. docker安装nginx

# docker search nginx  --查看可用版本
# docker pull nginx:latest  --拉取最新版本镜像
# docker images  -- 查看本地镜像
# docker run --name nginx-s1 -p 8080:80 -d nginx  --启动nginx容器
# --name 指定容器名称
# -p     端口映射,将本地 8080 端口映射到容器内部的 80 端口
# -d     后台运行容器,并返回容器ID

3. nginx容器.conf文件配置

# docker exec -it nginx-s1 bash  --进入docker容器,后更/bin/bash 
# -i   以交互模式运行容器,通常与 -t 同时使用;
# -t   为容器重新分配一个伪输入终端,通常与 -i 同时使用;
# exit --退出
# docker ps -a --查看运行的容器
# docker stop nginx-s1  --停止nginx容器
# docker rm nginx-s1  --删除nginx容器
# 提前准备一个经过配置的nginx.conf文件 /data/nginx.conf
# docker run --name nginx-s2 -p 8080:8081 -v /data/nginx.conf:/etc/nginx/nginx.conf -d nginx 

docker exec 是需要容器处于运行中且PID 1进程也处于运行中才能执行的操作。命令执行后会进入容器的默认工作目录,如果在Dockerfile中指定了工作目录,则会进入Dokcerfile指定的目录,如果命令中指定了工作目录-w则会进入该目录。

docker -v 挂载宿主机的一个目录。
dockers run -v /容器外部文件夹路径/:/容器内部文件夹路径/ -v /容器外部文件夹路径/:/容器内部文件夹路径 / … …
设置容器内文件权限:
:ro --只读,只能通过宿主机来操作文件,容器内部无法操作!
:rw --可读可写, 默认
例如:
#docker run -it -v /home/test:/home:ro centos /bin/bash
(冒号前/开始,一般为指定宿主机路径,所以为指定路径挂载)
docker inspect 容器id --查看容器挂载情况
Source为外部挂载的文件夹,Destination为容器内部被挂载的文件夹.

  • 访问nginx

更多推荐

Docker安装-Nginx