Docker记录
install
CentOS7
1 | sudo yum remove docker docker-common docker-selinux docker-engine |
更换镜像加速
1 | sudo mkdir -p /etc/docker |
自定义 docker0 地址防止内网冲突
1 | { |
Centos8
1 | dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo |
docker-compose install
1 | dnf install curl -y |
升级 containerd.io
1 | https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ |
image
basic
docker pull image
#拉取镜像到本地docker images
#查看本地所有 镜像docker run image
#创建一个容器并运行镜像每次使用
run
命令都会创建一个新的容器docker rmi image/imageId
#删除镜像docker ps [-a]
#查看运行的容器(-a 查看所有)docker run -d -p 6379:5000 image
#创建一个容器 并将主机 6379 端口 映射到容器 5000 端口
advance
拉取最新镜像
docker images |grep -v REPOSITORY|awk '{print $1}'|xargs -L1 docker pull
删除
goharbor
镜像docker images |grep -v REPOSITORY | grep 'goharbor'|awk '{print $1":"$2}' |xargs -L1 docker rmi
删除 none 镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')
docker images prune
删除
goharbor
容器docker ps -a | grep -v IMAGE |grep 'goharbor' |awk '{print $1}' |xargs -L1 docker rm
打包镜像
标准写法
docker save -o oa-latest.tar oa:latest
压缩写法
docker save oa:latest | gzip > oa-latest.tar.gz
Container
停止容器
docker stop $(docker ps -a -q)
删除容器
docker rm $(docker ps -a -q)
删除镜像
docker image rm $(docker image ls -a -q)
删除数据卷:
docker volume rm $(docker volume ls -q)
删除 network:
docker network rm $(docker network ls -q)
直接并全面清理的
docker stop $(docker ps -a -q) && docker system prune --all --force
Docker 容器开机自动启动
docker run 启动容器 使用–restart 参数来设置
docker run -m 512m --memory-swap 1G -it -p 6379:6379 --restart=always --name redis -d redis
–restart 具体参数值详细信息
no - 容器退出时,不重启容器
on-failure - 只有在非 0 状态退出时才从新启动容器
always -不关心退出状态 一直重启容器
使用 on-failure 策略时,指定 Docker 将尝试重新启动容器的最大次数。sudo docker run –restart=on-failure:10 redis
如果创建时未指定 –restart=always , 可通过 update 命令1
2
3
4docker update --restart=always xxx
docker update --restart=no xxx
docker update --restart=on-failure xxx
docker update --restart=unless-stopped xxx
Dockerfile
创建
文件格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..
# 1、第一行必须指定 基础镜像信息
FROM ubuntu
# 2、维护者信息
MAINTAINER docker_user docker_user@email.com
# 3、镜像操作指令
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/ sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
# 4、容器启动执行指令
CMD /usr/sbin/nginxDockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动执行指令。一开始必须要指明所基于的镜像名称,接下来一般会说明维护者信息;后面则是镜像操作指令,例如 RUN 指令。每执行一条 RUN 指令,镜像添加新的一层,并提交;最后是 CMD 指令,来指明运行容器时的操作命令。
测试
使用 DockerFile 构建
1
docker build -t runoob/centos:6.7 .
参数说明
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定 Dockerfile 的绝对路径
网络
默认 IP 修改
修改文件 /etc/docker/daemon.json 追加内容 “bip”: “ip/netmask” [ 切勿与宿主机同网段 ]
1 | vim /etc/docker/daemon.json |
常用软件安装
网卡定义
1 | docker network create nginx-net |
后续容器创建 加上–network nginx-net 即可
mysql
1 | docker run --name mysql5.7 \ |
1 | 创建volume |
sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
nexus
1 | docker run -d -p 8081:8081 --name nexus --restart=always -v nexus-data:/nexus-data sonatype/nexus3 |
Redis
1 | docker run --name redis -p 6379:6379 -v $PWD/data:/data -v $PWD/conf/redis.conf:/etc/redis/redis.conf --privileged=true --restart=always -d redis |
oracle
创建卷
docker volume create oracle-data
拉取并运行镜像
docker run -d --name oracle --restart=always -p 1521:1521 -v oracle-date:/u01/app/oracle/oradata --shm-size=1g pfs.wiseloong.com/wise/oracle:11-xe
默认密码
system/wiseloong
进入 SQLplus
docker exec -it oracle sqlplus system/wiseloong@//localhost:1521/XE
修改密码不过期(进入 sqlplus 执行)
alter profile DEFAULT limit password_life_time unlimited;
空表导出(进入 sqlplus 执行)
alter system set deferred_segment_creation=false;
删除卷
docker volume rm oracle-data
docker volume prune
Tomcat + 连接容器 (数据库)
1 | docker run -d -p 8088:8080 --name activiti \ |
ES(elasticsearch)
docker run -d -p 9200:9200 -p 9300:9300 --name es -e "discovery.type=single-node" elasticsearch:latest
GitLab
1 | docker run -d -h gitlab \ |
Jfrog
docker pull docker.bintray.io/jfrog/artifactory-oss:latest
创建卷组与容器
1 | docker volume create --name artifactory_oss_data |
Jenkins
1 | docker run -u root -p 8080:8080 \ |
Nginx
1 | docker run -d -p 80:80 --name nginx \ |
IDEA 连接 Docker
docker 配置
1 | vim /usr/lib/systemd/system/docker.service |
开放防火墙端口
firewalld-cmd --zone=public ==add-port=2375/tcp --permanent
docker 会自己打开防火墙
IDEA 中填写
tcp://172.17.150.61:2375