一、 docker的安装
1. 安装存储库拓展包
yum install -y yum-utils
2. 设定存储库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3. 安装三个包
yum -y install docker-ce docker-ce-cli containerd.io
4. 验证
docker version # 查询docker版本信息
docker info # 查询docker详细信息
docker run hello-world # 运行第一个容器:helloworld
5. 配置阿里云镜像源
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://f9dk003m.mirror.aliyuncs.com"]
}
EOF
6. systemctl命令
systemctl start docker
systemctl daemon-reload # 重新加载某个服务的配置文件
systemctl restart docker # 重起docker
7、docker常用命令
# 查询本地镜像
docker images
# 查找镜像
docker search [images]
# 下载镜像
docker pull [images:tag]
# 上传镜像
docker push [images:tag]
# 保存镜像
docker save [images:tag] -o xxx.tar
# 导入镜像
docker load -i xxx.tar
# 查看现有容器
docker ps -a (加了该选项可以查出未启动的容器)
# 镜像用可交互的方式创建容器
docker run -itd --name nginx_1 nginx:latest(latest->标签tag)
# 创建容器并暴露端口
docker run -itd -p 8800:80 --name nginx_1 nginx:latest
# 进入容器
docker exec -it [容器ID] 启动命令
# 如何启动和停止容器
docker start/stop [容器ID]
# 如何删除已停止的容器
docker rm [容器ID]
# 如何删除所有已停止的容器
docker rm `docker ps -aq
# 查看镜像或容器的详细信息
docker inspect [容器ID/镜像名:tag]
# 给镜像添加一个软链接并改名和标签
docker tag [oldname:tag] [newname:tag]
# 删除镜像
docker rmi 镜像:tag/镜像ID
# 容器和宿主机之间文件复制
docker cp [文件目录 容器ID:内部路径]
docker cp [容器ID:内部路径 文件目录]
8. 制作dockerfile
- 制作镜像的脚本,但远没有脚本复杂。他根据某种格式自定义内容, 就可以快速创建出需求的镜像
- 创建dockerfile目录,名字可以自定义。
- 在该目录中编辑dockerfile。
- 用COPY或ADD,需要把被COPY文件提前放到dockerfile目录中。
- 官方推荐用COPY,如果需要过程中解压,用ADD。
- CMD字段,需要用[“命令”,”选项1”]这种格式书写。
- CMD字段只能写一条命令,且这条命令尽量是前台执行的命令。如果是后台命令, 这条命令结束,docker就会自动关闭。
参数说明
FROM:底层镜像(如系统)
RUN:构建时容器内运行的命令。
COPY:复制docker目录中的文件到镜像中。
ADD:复制docker目录中的文件到镜像中。(过程可以解压)
EXPOSE:声明开放端口。 ENV:设置环境变量。
CMD:容器启动时执行的命令,最多只能执行一条。
WORKDIR:声明工作目录。类似cd。
9. 用dockerfile构建镜像
docker build -t(设置要构建镜像的名字) .
10. 再运行镜像
docker run -itd -p 8800:80 [image:tag]
11. 查看镜像
docker ps -a 确认是启动状态
12. 测试
宿主机用浏览器访问IP+port 看是否启动成功。
案例
- 用dockerfile创建并启动一个centos的apache镜像。
- 指定自定义内容。
mkdir apache
vim ./apache/index.html -> hello world -> 保存
vim ./apache/dockerfile
FROM centos:7
RUN yum -y install httpd
EXPOSE 80
COPY index.html /usr/share/httpd/noindex/index.html (可以先yum install httpd,然后find / index.html寻找路径)
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
13. docker数据持久化
- volumes(一对多)
docker volume create test1
docker run -itd -p 8800:80 -v test1:/usr/share/nginx/html nginx:v1
- bind-mount(一对一)
docker run -itd -p 8801:80 -v /var/log/cont/apache1:/var/log/httpd/ apache:new2
二、企业级镜像仓库Harbor
1. 从官网下载docker-compose二进制文件
wget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
2. 添加执行权限
chmod+x docker-compose-Linux-x86_64
3. 移动到系统指令目录下
mv docker-compose-Linux-x86_64 /usr/bin
4. 从官网下最新版本的harbor安装包
wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz
5. 解压
tar -xvf harbor-offline-installer-v2.3.1.tgz
6. 复制官方配置文件案例
cp harbor/harbor.yml.tmpl harbor/harbor.yml
7. 修改配置文件中hostname和https字段
vim harbor.yml
8. 初始化并安装
bash prepare && bash install.sh
# 用户名:admin 密码:Harbor12345
9. harbor 启动
cd harbor
systemctl start docker
./install.sh
10. harbor 关闭
docker-compose stop