Docker 笔记
注意
替换国内内网源:https://blog.csdn.net/otmqixi/article/details/81564515
docker 和 docker-compose 常用命令
# 查看当前镜像
docker images
# 查看当前运行镜像
docker ps
# 启动停止重启docker
systemctl start/stop/restart docker
# compose 启动等操作
docker-compose stop/start
docker 及 docker-compose 及 harbor 安装
安装docker
在线安装
yum install docker
systemctl start docker
离线安装
官网下载docker安装包,上传到服务器后解压到/usr/bin目录
# 解压
tar -zxvf docker-18.06.1-ce.tgz
# 复制到/usr/bin
cp docker/* /usr/bin/
# 将docker注册为服务
vim /etc/systemd/system/docker.service
# 编辑
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
保存文件
# 添加权限
chmod -x /etc/systemd/system/docker.service
# 重新加载配置文件
systemctl daemon-reload
# 启动
systemctl start docker
# 设置开机启动
systemctl enable docker.service
# 查看docker状态
systemctl status docker
# 查看版本
docker -v
安装docker-compose
# 添加EPEL源
yum install -y epel-release
# 安装python-pip
yum install -y python-pip
# 安装docker-compose
pip install docker-compose
# 更新
pip install --upgrade pip
# 验证是否安装成功
docker-compose -version
# 报错出现python版本问题:
sudo pip install pyrsistent==0.16.1
https://blog.csdn.net/liuyunshengsir/article/details/79136379
Harbor 安装
注意:在devops中利用jeckins流水线打包镜像到harbor上,需要对jenkins的服务器安装docker环境,并保证能用docker login 命令登陆到harbor上
1.8 版本安装
环境要求:
安装包:docker-18.06.1-ce.tgz格式
docker -version:12.03.0-ce +
docker-compos: 1.18.0 +
安装:
官网下载压缩包,offline版本
下载好上传到服务器目标目录,解压文件(tar -zxvf)
进入目录 可以看到 harbor.yml文件编辑该文件
基础配置只修改一下host和data_volume就可以,如需要加密则开启https配置(注意不要改http的端口否则会打不开页面)
mkdir /opt/application/harbor
保存文件后执行 默认用户名密码 admin Harbor12345
./prepare
./install
docker-compose ps
docker-compose start
docker-compose stop
2.0 版本安装
环境要求:
docker -vsersion: 18.09.9
docker-compose:1.26.2
安装:
官网下载2.0版本的介质包,上传服务器目标目录,解压
备份harbor.yml文件,并修改该文件中的hostname,并必须配置https,不配置无法登陆,这是2.0的要求。其他和1.8一样
保存文件后使用命令 ./install 运行
Dockerfile 打包镜像文件
以test.jar为例,创建一个dockerfile文件,vim Dockerfile ,记得要把目标jar与dockerfile放到同一目录下
FROM java:8
MAINTAINER wangcr
ADD test.jar localtest.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar","/localtest.jar"]
在文件中输入如上配置,来打包镜像,保存后,来进行编译镜像
docker build -t wangcr/test .
# 后面的这个"."就是当前目录下的Dockerfile文件
打包好后查看当前所有镜像 docker images 可以看到我们编译好的镜像文件。
下面来运行该镜像
docker run -d --name test -p 8085:8085 wangcr/test
运行成功会返回一串uuid,然后我们来查看当前容器的状态: docker ps
docekr打包好镜像上传到harbor
本地镜像打标签
docker tag wangcr/test 47.102.222.230/paas/wangcr/test:v1.0
//wangcr/test 是本地镜像 后面是私有仓库的地址/项目名称/镜像名称:版本号
利用docker images 来查看当前打了标签的镜像
登陆内部镜像仓库
docker login 47.102.222.230
如果登陆http而提示https拒绝连接的话可以先配置一下(CentOs 系统)
https://www.cnblogs.com/mjiu/p/10304142.html
vim /etc/docker/daemon.json
{"insecure-registries":["http://47.102.222.230"]}
并运行命令重新加载
systemctl daemon-reload
systemctl restart docker
依旧不行(2.0版本)
就配置https ,利用openssl模块生成带ip地址的密钥证书,进行配置
harbor 使用登陆时https问题
https://blog.csdn.net/zsd498537806/article/details/79290732
上传镜像
docker push 47.102.222.230/paas/wangcr/test
// 注意不需要加http