镜像 只读的模板,一个独立的文件系统 包含容器需要的数据
容器 镜像的运行实例 简易的环境
仓库 存镜像
安装
sh 方式快速安装
#!/bin/bash
stop_firewalld_status(){
count = `systemctl status firewalld | grep running | wc -l`
if [[ ! $count -eq 1 ]]; then
systemctl stop firewalld
systemctl disable firewalld
systemctl restart network
echo "success to stop firewalld"
else
echo "the firewalld has been stop"
fi
}
update_yum_package(){
yum -y update
yum remove docker docker-common docker-selinux docker-engine
yum install –y yum-utils device-mapper-persistent-data lvm2 unzip
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
systemctl enable docker
}
modify_docker_config(){
cd /lib/systemd/system
sed -i 's#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock#ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --registry-mirror=https://9cpn8tt6.mirror.aliyuncs.com#g' docker.service
systemctl daemon-reload
systemctl restart docker
}
stop_firewalld_status
update_yum_package
modify_docker_config
1.检测内核版本 内核版本>3.10
uname -r
2.安装yum源
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
3.安装docker
yum install docker-io
4.启动
service docker start
systemctl start docker
方法2参考 先卸载 再安装
yum -y update
yum remove docker docker-common docker-selinux docker-engine
yum install –y yum-utils device-mapper-persistent-data lvm2 unzip
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-- 这一步才是核心
yum install -y docker-ce
systemctl start docker
systemctl enable docker
5.版本
docker version
6.开启tcp远程连接
/lib/systemd/system
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
systemctl daemon-reload
service docker restart
ss -lt |grep 2375
开放端口
iptables -I INPUT -ptcp --dport 2375 -j ACCEPT
7.加入开机
service docker start #启动
docker chkconfig docker on #加入开机启动
docker run hello-world
docker images
docker ps -a (所有容器) -q (容器id)
docker search fastDFS
docker pull xxx
docker rmi xxx
docker stop /start /run xx xx
/opt/docker/redis
docker run -d -p 6379:6379 -it --name redis-zxy redis
–name 指定别名 -i 交互模式 -t分配伪终端 命令行 -p 映射端口 -d 后台运行
docker search xxx 搜索镜像
docker pull xxx 拉取镜像
docker run xxx 运行容器
docker images 查看镜像
docker ps 查看容器 -a (所有容器) -q (容器id)
docker rmi xxx 移除
docker stop /start /run xx xx 启停
运行具体操作,以redis为例
docker search redis
docker pull xxx
docker run -d -p 6379:6379 -it --name redis-zxy redis
–name 指定别名 -i 交互模式 -t分配伪终端 命令行 -p 映射端口 -d 后台运行
进入
docker exec -it redis-zxy /bin/bash
redis-cli
set test 1
退出
docker exit
docker ps -a 历史容器
docker rm 移除容器
dockerFile->打包生镜像
from 定制一个基础镜像
copy
add 源 --> 目标
# eclipse所用
FROM registry.cn-shanghai.aliyuncs.com/moc_hanyunapp/library:jdk-1.8
MAINTAINER huzhenxz@gmail.com
RUN mkdir -p /iot-server
WORKDIR /iot-server
EXPOSE 9006
EXPOSE 5005
ENV TZ=Asia/Shanghai
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ADD target/iot-server.jar ./app.jar
# target仅仅是eclipse用 代码仓库里保留 ./
ENTRYPOINT java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Djava.security.egd=file:/dev/./urandom -jar ./app.jar $PARAMS
=========================================================
#! /bin/bash 这是环境中的dockerfile
# 定义变量
API_NAME=iot-server
API_VERSION=1.0
API_PORT=9006
IMAGE_NAME=iot-server:1.0
CONTAINER_NAME=$API_NAME
JAR_NAME=iot-server.jar
ALIYUN_IMAGE_NAME=iot-server-1.0.241.001
# 删除Docker容器
docker stop $API_NAME
docker rm -f $API_NAME
sleep 5
# 删除Docker镜像
docker rmi $IMAGE_NAME
# 构建Docker镜像
cd /opt/xgit/$API_NAME/
# 这里 . 是只找到上下文中的dockerFIle 所以要有这个文件哦
docker build -t $IMAGE_NAME .
# 根据名称获取镜像名称获取镜像ID
IMAGE_ID=`docker images -q --filter reference=$IMAGE_NAME`
echo $IMAGE_ID
# 推送Docker镜像
docker tag $IMAGE_ID registry.cn-shanghai.aliyuncs.com/moc_hanyunapp/moc_develop:$ALIYUN_IMAGE_NAME
docker push registry.cn-shanghai.aliyuncs.com/moc_hanyunapp/moc_develop:$ALIYUN_IMAGE_NAME
echo "推送Docker镜像成功"
# 启动Docker容器
docker run -d -m 2048M --net host -v /opt/iot:/opt/iot -e PARAMS="--spring.profiles.active=dev --spring.cloud.nacos.discovery.server-addr=10.100.2.241:8848 --spring.cloud.nacos.config.server-addr=10.100.2.241:8848 --spring.cloud.nacos.config.file-extension=yaml --spring.cloud.nacos.config.group=DEFAULT_GROUP" -e "SPRING_PROFILES_ACTIVE=dev" --name $CONTAINER_NAME $IMAGE_NAME
~
=====================================================
expose 暴露docekr端口
env 设置环境变量
add 添加复制 target 搜索并复制
ENTRYPOINT 类似于 sh cmd 可执行
后面是远程debug的一种设置
在后面是生随机数的一种
docekr build==>eclipse 自带build功能 详情见
https://blog.csdn.net/qq_28434529/article/details/106421023
=====额外运行
docker run -d -m 1024M -p 9009:9009 -e "SPRING_PROFILES_ACTIVE=dev" --name xx-server xxx-server:dev
check_installed iot-server-1.0.119.001
docker run -d --name='14-iot-server-1.0' --restart=always --net='host' -e TZ="Asia/Shanghai" -e 'JVM_XMS'='1024m' -e 'JVM_XMX'='2048m' -e 'JVM_MS'='-XX:MetaspaceSize=1024M' -e 'JVM_MMS'='-XX:MaxMetaspaceSize=2048m' -e PARAMS="--spring.profiles.active=dev --spring.cloud.nacos.discovery.server-addr=$local_ip:8848 --spring.cloud.nacos.config.server-addr=$local_ip:8848 --spring.cloud.nacos.config.file-extension=yaml --spring.cloud.nacos.config.group=DEFAULT_GROUP" -p '9006:9006/tcp' -p '9098:9098/tcp' -v '/mnt/user/appdata/iot':'/opt/iot':'rw' 'registry.cn-shanghai.aliyuncs.com/moc_hanyunapp/moc_product:iot-server-1.0.119.001'
1.打包 配置注册中心–>2.配置docker服务(eclipse先第三部)–>3.编辑dockerFile–>4.执行推到服务–>5.服务docker tag id 阿里云tag–>6.docker push 阿里云tag
阿里云
https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
sudo docker login --username=xxx@qq.com registry.cn-hangzhou.aliyuncs.com
docker tagid aliyuntagid
docker push aliyuntagid