Docker
镜像导出离线导入
docker save nginx > nginx.tar
docker load -i nginx.tar
参数
容器之间交互 --link answer-server:answerserver
answer-server 容器名
answerserver 容器别名,用于容器与容器之间的访问
-ti
-t选项是让Docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。
-d
在后台以守护态运行(Daemonized)形式运行
docker run -d centos /bin/sh -c "while true;do echo hello word;sleep 1;done"
-P
随机映射一个30000-49900的端口到容器内部开放的网络端口
-p
指定端口xxx:xxx的映射
命令
# 将docker中的内容拷贝到本地
docker cp vk:/usr/local/openjdk-8/jre/lib/security/java.security ./
# 查询网络
# 如果容器没有显示指定使用的网络,默认使用bridge
docker network ls
# 创建网络
# -d 指定类型 my_bridge为名称
docker network create -d bridge my_bridge
# 将已存在的容器加入my_bridge网络并验证
docker network connect my_bridge busybox_2
docker network inspect my_bridge
# 查看所有网络配置信息
docker inspect (容器ID/容器别名)
# 显示容器IP地址和端⼝号,如果输出是空的说明没有配置IP地址(不同的Docker容器可以通过此IP地址 互相访问)
docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID
# 显示⼀个运⾏的容器⾥⾯的进程信息
docker top birdben/ubuntu:v1
# 前台交互式启动docker容器
docker run -it image:tag /bin/bash
# 后台守护式启动docker容器
docker run -d image:tag /bin/bash
# (重要)工作中常用方式
docker run -d image:tag /bin/bash
# 进入容器
docker exec -it 容器ID /bin/bash
Dockerfile镜像
Dockerfile是⼀个⽂本格式的配置⽂件,⽤户可以使⽤Dockerfile快速创建⾃定义的镜像
。
由四部分组成: 基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令
例子:
# 指定基础镜像(重要)
FROM mysql:5.7
# 维护者信息(重要)
MAINTAINER shanPeng
# 指定环境变量 后续被RUN指令使用,并在容器运行时保持(重要)
ENV TZ=Asia/Shanghai
# 每条RUN命令将在当前镜像基础上执⾏指定命令,并提交为新的镜像。当命令较⻓时可使⽤\来换⾏。(重要)
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 复制本地主机的<src>到容器中的<dest>。⽬标路径不存在时,会⾃动创建,用于构建image。
COPY ./tables_nacos.sql /docker-entrypoint-initdb.d
COPY ./shanPeng-mysql-5.7.sql /docker-entrypoint-initdb.d
# 复制本地主机的<src>到容器中的<dest>。⽬标路径不存在时,会⾃动创建,用于构建image。
# 与COPY区别:ADD可以为url;ADD到container的tar文件会自动解压,并删除源tar文件。例如:
ADD ./shanPeng-mysql-5.7.sql /docker-entrypoint-initdb.d
# 告诉docker服务器容器暴露的端口号,供互联系统使用;例如:
EXPOSE 端口号1 端口号2
# 配置容器启动后执行的命令,不会被docker run 提供的参数覆盖(与CMD的区别)例如:
ENTRYPOINT ["要执行的命令","参数1","参数2"]
# 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放外部数据;例如:
VOLUME ["/tomcat/webapps"]
# 设置默认的工作目录
WORKDIR /path/to/workdir
# 启动容器时执行的命令 会被docker run提供的参数覆盖;例如:
CMD ["要执行的命令","参数1","参数2"]
运行
# -t 为构建的镜像制定一个标签
# . 指定Dockerfile文件在当前目录下,也可以替换为一个具体的Dockerfile路径
docker build -t="userM:v1" .
Docker-Compose连编应用部署
它允许⽤户通过⼀个单独的 docker-compose.yml 模板⽂ 件(YAML 格式)来定义⼀组相关联的应⽤容器为⼀个项⽬(project)。
例子:docker-compose.yml
version: '2'
services:
userM-admin:
image: userM/admin
ports:
- "8080:8080"
environment:
- spring.profiles.active=dev
userM-api:
image: userM/api
ports:
- "8081:8081"
environment:
- spring.profiles.active=dev
安装
# 安装epel扩展源
sudo yum -y install epel-release
# 安装python-pip
yum -y install python-pip
# 清除缓存cache
sudo yum clean all
#通过pip安装docker-compose
sudo pip install -U docker-compose
检验是否安装完成
docker-compose -h
执行
# up 启动
# -f 运行./compose/下的docker-compose.yml文件
# -p 将容器名设置为myapp
# -d 后台运行
sudo docker-compose -f ./compose/docker-compose.yml -p myapp up -d
# 用于停止所有容器,并将他们删除,同时删除网络等配置信息
docker-compose down
DOCKER容器时区问题解决
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
容器启动命令
Db2
docker run
docker run -itd --name db2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=Aa112233! -e DBNAME=testdb -v /db2/database:/database ibmcom/db2
db2 命令
切换到用户实例db2inst1
su - db2inst1
启动实例
db2start
查看运行状态
db2pd -
查询已经建好的数据库
db2 list db directory
连接到数据库sample
db2 connect to sample
db2 "select count(*) from V_Singlecheckquery where intercode like '001%' and intercode like '001%' and sendtime > '2022-07-10 00:00:00' and sendtime < '2022-07-10 23:59:59'"
--查询当前schema
db2 values current schema
--设置默认schema
db2 set schema = sfhc
Redis
docker run -p 6379:6379 --name redis_vk -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
Nginx
docker run -d -p 80:80 \
-p 443:443 \
--name nginxweb \
--link answer-server:answerserver \
-v /usr/local/docker/nginx/html:/usr/share/nginx/html \
-v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/docker/nginx/logs:/var/log/nginx \
nginx
MySql
docker run -d --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
Tomcat
docker run -d --name tomcat --restart=always -p 8080:8080 --link mysql -v /webapps:/usr/local/tomcat/webapps tomcat