Ubuntu 安装 docker
官方教程 https://docs.docker.com/engine/install/ubuntu/
centeos 安装 docker
官方教程 https://docs.docker.com/engine/install/centos/
# 安装 yum-utils 包
yum install -y yum-utils
# 添加docker仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 用阿里云的镜像更快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
如果提示 containerd 提示版本过低 https://download.docker.com/linux/
下载最新版的 containerd.io 和其它的一些 docker 资源
示例下载: dnf install -y https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm
centos 重启后 需要重启 docker systemctl start docker.service | service docker start
Is the docker daemon running :报错解决办法 service docker start
镜像:是由一系列的只读的层构建,每一层对应DockerFile里面的声明构成
容器: 与镜像的唯一区别在于容器的最上面那一层是可读可写的
启动 docker 服务
service docker start
systemctl restart docker
重启docker服务,systemctl命令它实际上将 service 和 chkconfig 这两个命令组合到一起
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载
docker inspect containerName|containerID
查看容器配置信息docker images
查看本机的镜像docker ps
查看容器-a
查看所有容器 包括未运行的docker pull nginx:latest
安装 Nginx 镜像:docker start|stop|restart containerName
启动|关闭|重启容器docker kill -s KILL containerName
杀掉一个运行中的容器 并向容器发送一个信号docker build ./ -t imageName:1.0.0
利用 Dockerfile 创建镜像 -t 后,表示打的标签 name:tag 或者 name 格式 tag 不写默认为 latest
基于路径./(当前路径)打包一个镜像,镜像的名字是 imageName ,版本号是1.0.0。会自动寻找Dockerfile来打包出一个镜像
docker create --name containerName imageName:tag
使用镜像 imageName 创建一个容器 并命名为 containerNamedocker run --name containerName -d imageName:tag
:创建一个容器,以后台模式启动,并命名为 containerName
-p 80:80 主机(宿主)端口:容器端口 容器端口默认80
-P 容器内部端口随机映射到主机的端口 【在服务器中一定要加上,否则默认的80端口无法访问】
-d 后台运行容器,并返回容器ID;
-v /data:/data 主机的目录 /data 映射到容器的 /data
docker rm -f containName containName
强制删除一个或多个容器docker image rm imageName:tag | docker rmi imageName:tag
强制删除一个或多个容器
docker 国内镜像
命令行
/etc/docker/daemon.json 创建或修改该文件,加如下内容,修改后重启 systemctl restart docker.service
{
// 阿里云的账号是需要自己去注册然后生成的
"registry-mirrors": [
"http://docker.mirrors.ustc.edu.cn",
"https://almtd3fa.mirror.aliyuncs.com",
"https://3laho3y3.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com"
]
}
客户端
打开docker桌面端 -> settings -> Docker Engine 添加如下配置
"registry-mirrors": [
// 同上
],
"insecure-registries": [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
docker 安装 nginx
方式一:Dockerfile
# 使用 Nginx 作为镜像
FROM nginx
# # 将宿主机中的./index.html文件复制进容器里的 /usr/share/nginx/html/index.html(这个地址是固定的)
COPY ./index.html /user/share/nginx/html/index.html
# 容器对外暴露的端口
# 这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
# 如果改为 83 也要同步修改 nginx 的默认端口为 83 否则,不会生效
EXPOSE 80
方式二:
docker run -d --name nginx-a -p 2022:80 -v /home/cicd/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /home/cicd/nginx/html:/usr/share/nginx/html -v /home/cicd/nginx/log:/var/log/nginx nginx:latest
这里一定都要配置 不然可能无法正常访问
default.conf 简单配置
server {
listen 80;
server_name localhost;
# location块
location / {
root html;
index index.html index.htm;
}
}
html 也要提前创建
宿主机访问虚拟机中的docker容器的服务
ifconfig 中的 docker0: 下的 dockerIP; ens33:下的 服务ip
以管理员运行 cmd 执行: route -p add dockerIP mask 255.255.0.0 服务IP
mask 后的掩码,参考 docker0 netmask 后的掩码
进入 docker 容器
docker exec -it 容器id或容器名称 /bin/bash 【表示进入容器的 /bin/bash 目录,固定这个地址进入,否则会报错】
-i 即使没有附加也保持STDIN(标准输入) 打开,以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
容器中无法使用 vim 在容器中执行以下命令
apt-get update
apt-get install vim
退出容器,输入 exit
docker 容器群管理
docker-compose 安装示例 https://docs.docker.com/compose/install/
.yml 文件,和 json 一样是配置文件 有可能是 json 的写法不好,才发明了它 语法与json有较大区别
- docker-compose.yml 配置
version: '3' # 这里要查看与 docker engin 对应的版本来修改
services: # 集合
docker_jenkins:
user: root # 避免一些权限问题 所以使用了root
restart: always # 重启方式
image: jenkins/jenkins:latest # 指定服务所使用的镜像
container_name: jenkins # 容器名称
ports: # 对外暴露的端口定义
- 8080:8080
- 50000:50000
volumes: # 卷挂载路径
- /home/jenkins/jenkins_home/:/var/jenkins_home # 映射 Jenkins 在容器中的文件
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker # 为了可以在容器内使用docker命令
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
docker_nginx:
restart: always
image: nginx
container_name: nginx
ports:
- 8090:80
- 80:80
- 433:433
volumes:
- /home/nginx/conf.d/:/etc/nginx/conf.d
- /home/webserver/static/jenkins/dist/:/usr/share/nginx/html
docker-compose up -d
后台创建并运行所有容器