Docker安装配置:
依赖:
64 bits CPU
Linux Kernel 3.10+
Linux Kernel cgroups and namespaces
YUM安装:
#安装基础依赖包与配置docker镜像yum源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
# 默认安装最新稳定版本
yum -y install docker-ce
# 安装指定版本。先查看软件源支持的Docker CE版本,再安装指定VERSION(yum list中的第二列信息为VERSION)
# yum list docker-ce.x86_64 --showduplicates | sort -r
# yum -y install docker-ce-<VERSION_STRING> [docker-ce-cli-<VERSION_STRING> containerd.io]
# 启动
systemctl start docker
# 查看版本
docker version
# 在容器中运行一个测试容器,验证 docker 是否安装成功
docker run hello-world
# 卸载Docker CE
# yum remove docker-ce
# rm -rf /var/lib/docker
配置:这里只配置了数据存放位置与镜像加速,其他的可自行设置
# 配置镜像加速。默认docker拉取镜像时不是国内的地址,可修改为国内的镜像源
vim /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io","https://docker.mirrors.ustc.edu.cn"]}
# 修改数据存放位置
vim /usr/lib/systemd/system/docker.service
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd --graph=/data/docker -H fd:// --containerd=/run/containerd/containerd.sock
# 重启docker
systemctl daemon-reload
systemctl restart docker
Docker基础用法:
命令格式:
格式:
docker [组件/对象] COMMAND [ARG...] ##新写法
docker COMMAND [ARG...]
如:
docker image pull busybox
docker pull busybox
docker container run -it --name b1 busybox
docker run -it --name b1 busybox
创建并运行第一个容器:busybox
# 查看Dockhub仓库上可供安装的镜像
docker search busybox
# 从Docker仓库中拉取镜像(执行run时若镜像不存在,也会先自动下载)
docker image pull busybox
# 查看镜像
docker image ls
# 创建并启动容器
## --name:容器名称定义为bb1
## /bin/sh:启动容器时并运行/bin/sh命令,它会作为容器的第一个进程运行在前台,进程PID为1;Docker判断一个容器是否处于running状态,是通过检查一个容器内是否存在一个PID为1的进程正常运行在前台;
## -it:表示以交互模式进入到容器,此时容器处于running状态,若输入exit退出终端后,容器处于stopped状态;
docker container run --name bb1 -it busybox /bin/sh
# 查看容器
## -a: 列出所有容器,包括处于未运行状态的容器
docker container ls -a
docker ps -a
# 停掉与启动容器
docker container stop bb1
docker container start bb1
# 进入容器
docker exec -it bb1 /bin/sh
# 当指定了shell终端作为容器的第一个进程运行在前台时,且容器要处于running状态,这时可用attach直接进入
docker attach bb1
# 在容器外执行命令
docker exec bb1 touch "/root/file1" "/root/file2"
docker exec bb1 rm "/root/file2"
# 杀死正在运行的容器
docker container kill bb1
# 删除镜像(停掉容器 --> 删除容器 --> 删除镜像)
docker container stop bb1
docker container rm bb1
docker image rmi busybox
# 容器运行结束后自动删除容器
## --rm: 当输入exit退出容器时,同时会自动删除容器
docker run --name bb2 -it --rm busybox
创建并运行一个服务容器:nginx
# 创建并运行容器
### -d:后台启动
### 启动后容器已经处于running状态,因为该镜像已预先设置好将nginx程序作为容器中的第一个进程运行在前台(不同于busybox镜像)
### 所以启动容器时无需再指定运行其他命令;服务容器启动后,可再通过docker exec指定一个shell进入到容器
docker run --name web1 -d nginx:1.17-alpine
docker ps
# 查看web1容器ip
docker container inspect web1 | grep IPAddress
# 宿主机上测试访问nginx
curl 172.17.0.2
# 查看容器日志(即nginx访问日志)
docker container logs web1
# 进入容器
### exec -it:以交互模式进入到一个处于running状态的容器shell终端
docker container exec -it web1 /bin/sh
创建并运行一个服务容器:redis
# 下载镜像
docker image pull redis:5.0.5-alpine
# 创建容器(但不启动)
docker container create --name kv1 redis:5.0.5-alpine
# 手动启动容器
docker container start kv1
# 进入容器
docker container exec -it kv1 /bin/sh