#删除所有容器 docker rm -f $(docker ps -aq) #删除所有镜像 docker rmi -f $(docker images -aq) #查看网络 ip addr
Centos8停更—转Conter stream
CentorOS 8.2下载失败
$ sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* $ sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-* $ yum update
查看当前内核版本
uname -r
使用 root 权限更新 yum 包
docker安装 1.卸载旧版本yum -y update 注意 yum -y update:升级所有包同时也升级软件和系统内核; yum -y upgrade:只升级所有包,不升级软件和系统内核
yum remove docker docker-common docker-selinux docker-engine
- 卸载
systemctl stop docker #停止docker yum -y remove docker-ce docker-ce-cli containerd.io #卸载 sudo rm -rf /var/lib/docker #删除目录 sudo rm -rf /var/lib/containerd #删除目录
-
安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2. 设置 yum 源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
3.选择docker版本并安装
查看docker列表
yum list docker-ce --showduplicates | sort -r # 默认最新版安装 yum install docker-ce docker-ce-cli containerd.io
安装版本
sudo yum install docker-ce 版本号
启动并加入开机启动
2.1配置阿里云镜像加速sudo systemctl start docker #启动docker sudo systemctl enable docker #加入开机启动项
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://affyvopl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reloadsudo
sudo systemctl restart docker
2.2配置腾讯云镜像加速
#创建或修改 /etc/docker/daemon.json 文件,并写入以下内容:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
EOF
#依次执行以下命令,重新启动 Docker 服务。
systemctl daemon-reload
service docker restart
#检查是否生效
docker info
#在返回信息最底下有如下信息则表示成功
#Registry Mirrors:
# https://mirror.ccs.tencentyun.com
#重启docker服务 systemctl restart docker.service
5.验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
Docker拉取镜像docker version
常用命令 liunk命令Docker 安装 MySQL | 菜鸟教程 (runoob.com)
#新建文件夹 mkdir 文件夹名 #新建文件 touch 文件名 #强制删除文件 rm -rf 文件夹名 #查看当前目录 pwd #移动文件夹 mv 文件名/文件夹名 目的路径 #更新系统 apt update #下载ip查看命令 apt install -y iproute2 #下载安装ping命令 apt-get install inetutils-ping帮助命令
docker version #docker版本 docker info #docker信息 docker [命令] --help #查看docker命令镜像命令
docker image 镜像搜索下载地址
docker pull [镜像名:tag] #拉取镜像,不加tag,默认最新版 docker image rm [image] #删除镜像 格式:镜像名:tag 也可以通过ID来删 docker rmi -f [image] #删除镜像 格式:镜像名:tag 也可以通过ID来删 docker rmi -f $(docker images -qa) #递归删除所有镜像 docker history 镜像ID #镜像的历史 #容器添加tag docker tag 容器ID 账号/newname:tag容器命令
#从宿主机拷贝文件到容器 #查看容器具体信息 docker inspect 容器ID #进入正在运行的容器 docker attach 容器ID #强制删除容器 docker rm -f 容器ID参数说明
#docker run 命令参数 -p 主机端口:容器内端口 -v 主机目录:容器内目录 -d 后台运行 -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用; -i 以交互模式运行容器,通常与 -t 同时使用; --volumes-from 继承容器数据卷进行共享Docke常用环境安装配置 redis
- 先去官网下载对应版本的配置文件
#新建映射文件 $ mkdir /data/redis $ mkdir /data/redis/data #创建容器并映射配置文件 docker run -p 6379:6379 --name redis -v /data/redis/data/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
-
配置文件设置
-
bind 127.0.0.1 注释掉,要不只能本机访问
-
requirepass 连接外网的,建议设置密码
-
#下载镜像 docker pull mysql:8.0 #创建目录 #运行容器,做数据挂在 docker run -itd --name mysql-test -p 3306:3306 -v /home/mybluet/mysql/conf:/etc/mysql/conf.d -v /home/mybluet/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=cc2356 mysql #注意 如果创建一次挂载到宿主机成功,删除后重新创建容器并挂载,。密码等配置文件依然为第一次创建的内容nginx 1.安装docker(复制里面的测试文件)
docker run --name nginx-test -p 80:80 -d nginx docker start nginx-test
- 将nginx关键目录映射到本机
mkdir -p /root/nginx/www /root/nginx/logs /root/nginx/conf #www: nginx存储网站网页的目录 #logs: nginx日志目录 #conf: nginx配置文件目录
docker ps -a #查看容器id
#将nginx-test容器配置文件copy到本地 $ docker cp 容器id:/etc/nginx/nginx.conf /root/nginx/conf #停止nginx-test服务 docker stop nginx-test
#创建容器,完成映射 docker run -d -p 80:80 --name nginx-web -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx #启动nginx docker start nginx-webnacos 1.挂载目录
mkdir -p /mydata/nacos/logs/ #新建logs目录 mkdir -p /mydata/nacos/init.d/2.初始化数据库表
- 创建名为nacos的数据库
- 运行 nacos-mysql.sql文件建表[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fXoYILr0-1652508447382)(E:NotemdDocker.assetswatermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk1NzY5,size_16,color_FFFFFF,t_70.png)]
- 修改配置文件application.properties
vim /mydata/nacos/init.d/application.properties #配置内容如下 # spring server.contextPath=/nacos server.servlet.contextPath=/nacos server.port=8848 spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=root db.password=root # nacos.cmdb.dumpTaskInterval=3600 # nacos.cmdb.eventTaskInterval=10 # nacos.cmdb.labelTaskInterval=300 # nacos.cmdb.loadDataAtStart=false # metrics for prometheus #management.endpoints.web.exposure.include=* # metrics for elastic search management.metrics.export.elastic.enabled=false #management.metrics.export.elastic.host=http://localhost:9200 # metrics for influx management.metrics.export.influx.enabled=false #management.metrics.export.influx.db=springboot #management.metrics.export.influx.uri=http://localhost:8086 #management.metrics.export.influx.auto-create-db=true #management.metrics.export.influx.consistency=one #management.metrics.export.influx.compressed=true server.tomcat.accesslog.enabled=true server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i # default current work dir server.tomcat.basedir= ## spring security config ### turn off security #spring.security.enabled=false #management.security=false #security.basic.enabled=false #nacos.security.ignore.urls=*.css,*.js,*.html,*.map,*.svg,*.png,*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/** # nacos.naming.distro.taskDispatchPeriod=200 # nacos.naming.distro.batchSyncKeyCount=1000 # nacos.naming.distro.syncRetryDelay=5000 # nacos.naming.data.warmup=true # nacos.naming.expireInstance=true nacos.istio.mcp.server.enabled=false - 启动nacos容器
docker run --name nacos -d -p 8848:8848 --privileged=true --restart=always -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /mydata/nacos/logs:/home/nacos/logs -v /mydata/nacos/init.d/application.properties:/home/nacos/init.d/custom.properties nacos/nacos-server
docker run -p 9000:9000 -p 9090:9090 -d --name minio -v /mydata/minio/data:/data -v /mydata/minio/config:/root/.minio -e "MINIO_ROOT_USER=用户名" -e "MINIO_ROOT_PASSWORD=密码" minio/minio server /data --console-address ":9090"jetty
docker run -d --name jetty -p 8080:8080 -v /opt/webapps:/usr/local/jetty/webapps jetty /var/lib/jetty/webapps docker run -d --name jetty -p 8080:8080 -v /opt/webapps:/var/lib/jetty/webapps jettyDocker提交一个自己的镜像
commit镜像
docker commit -m="提交描述信息" -a="作者" 容器ID 目标镜像:[tag]容器数据卷(容器数据持久化) 将容器中的数据挂在到宿主机中
#创建centos容器,并挂在home文件在test中,创建成功后进入容器 docker run -it -v /home/test:/home centos /bin/bash容器文件挂分类
#具名挂载
$ docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
#匿名挂载
$ docker run -d -P --name nginx01 -v /etc/nginx nginx
#指定挂载目录
$ docker run -d -P --name nginx01 -v /home/nginx:/etc/nginx nginx
#查看匿名和具名挂载目录
$ docker volume ls
local 808ca988229ef9cffba838de3c634d3e93cd42a5ad00876f296a57d0914246ef
local cbd513b99b825527c8c8a8e544f6cdeeb9384cfd513133f6f8546e6d05bf6c25
local d96070683262650cd5d0439355450803f6b2e0aae7e6faa7ddbf0a62ea500fdb
local e9cbac0b341c5527c5a96527e75e206f222ee04ee2bef2cad0eafc5ff1172178
local e83c65e92b45b4f961ac656480479c0fcf356f786d055115a85f1236a43fe76d
local ec05750ae89c9a7bf65007e4d44ac328c1fc79fb0a807295e270a10435ef53c7
local juming-nginx
local portainer_data
#具名和匿名挂载目录查看
$ volume inspect juming-nginx
[
{
"CreatedAt": "2022-05-12T15:59:33+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
"Name": "juming-nginx",
"Options": null,
"Scope": "local"
}
]
#挂载目录全在/var/lib/docker/volumes docker的工作目录中
拓展
#容器挂载读写权限 ro,rw(默认为rw),当权限为ro时,容器中挂载的文件只能通过宿主机来修改,容器内部是无法操作的 $ docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx:ro nginx数据卷容器同步
注:共享数据卷通过互相复制同步,如果第一个容器数据卷挂载持久化到宿主机,那么宿主机中的数据不会丢失;如果是Dockerfile直接挂载则是互相复制模式
#生成第一个mysql容器,挂载容器到宿主机 docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7 #生成第二个mysql容器,使用--volumes-from进行集成msyql01容器的挂在卷,实现数据共享 docker run -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 mysql:5.7 --volumes-from mysql01 mysql:5.7Dockerfile 指令说明 集合
| FROM | 基础镜像,一切从这里构建 |
|---|---|
| MAINIAINER | 镜像构建作者,一般姓名加邮箱 |
| RUN | 镜像构建的时候需要运行的命令 |
| ADD | 步骤:tomcat镜像,这个运行文件的压缩包!添加内容 |
| WORKID | 镜像的工作目录 |
| VOLUME | 挂载的目录 |
| EXPOSE | 保留的端口配置 |
| CMD | 指定这个容器启动的时候需要运行的命令,只有最后一个会生效,可被替代 |
| ENTRYPOINT | 指定这个容器启动的时候要运行的命令,可以追加命令 |
| ONBUILD | 当构建一个被继承DockerFile 这个时候就会运行ONBUILD 的指令,触发指令 |
| COPY | 类似ADD 将我们文件拷贝到镜像中 |
| ENV | 构建的时候设置镜像变量 |
#运行容器时后面加参数会直接替换CMD中的命令 #ENTRYPOINT会在命令后追加 #例: CMD ["ls","-a"] ENTRYPOINT ["ls","-a"] docker run 镜像ID -l #-l cmd会直接替换,ENTRYPOINT则追加 CMD ["-l"] ENTRYPOINT ["ls","-a","-l"]牛刀小试 编写dockerfile文件
FROM centos MAINTAINER bluet<1658439491@qq.com> ENV MYPATH /usr/local #全局变量 WORKDIR $MYPATH #设置工作目录 RUN yum -y install vim #下载vim RUN yun -y install net-tools #下载工具 EXPOSE 80 #暴露端口80 CMD echo $MYPATH CMD echo -----end------ CMD /bin/bash通过dockerfile构建镜像
docker build -f [dockerfile文件路径] -t 镜像名:[tag]制作tomcat镜像
#创建说明文件和Dockerfile touch readme.txt vim Dockerfile #执行Dockerfile文件生成镜像diytomcat docker build -t diytomcat . #创建容器,挂载项目和日志 docker run -d -p 9090:8080 --name bluettomcat -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.62/webapps/test -v /home/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.62/logs diytomcat #--------------------------------------------------------beg----------------------------------------------------------------- #dockerfile文件 FROM centos:7 MAINTAINER bluetCOPY readme.txt /usr/local/readme.txt ADD jdk-8u333-linux-x64.tar.gz /usr/local ADD apache-tomcat-9.0.62.tar.gz /usr/local RUN yum -y install vim ENV MYPATH /usr/local WORKDIR $MYPATH ENV JAVA_HOME /usr/local/jdk1.8.0_333 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.62 ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.62 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin EXPOSE 8080 CMD /usr/local/apache-tomcat-9.0.62/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.62/bin/logs/catalina.out #-----------------------------------------------------end-------------------------------------------------------------------
发布镜像注:JAVA_HOME解压后JDK文件名,有的为java,有的为jdk,注意查看
发布到docker hub默认仓库
#修改镜像tag docker tag eb6bd5eb2ae9 cysindocher/diytomcat:1.0 #发布镜像 docker push cysindocher/diytomcat:1.0
发布到阿里云镜像仓库
#退出登录 docker logout #登录登录阿里云Docker Registry docker login --username=手机号 registry.cn-hangzhou.aliyuncs.com #生成镜像版本号 docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/bluet/yunsong_test:[镜像版本号] #提交镜像到仓库 docker push registry.cn-hangzhou.aliyuncs.com/bluet/yunsong_test:[镜像版本号] #选择合适的镜像仓库地址 #从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。 #如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。镜像本地拷贝
#打包镜像 docker save --help #读取镜像 docker load --helpDocker网络 查看网络地址
#查看网络地址 ip addr #lo:本机回环地址、eth0:内网地址、docker0:docker地址 1: lo:容器连通mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 52:54:00:52:67:33 brd ff:ff:ff:ff:ff:ff inet 10.0.4.2/22 brd 10.0.7.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe52:6733/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: docker0: mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:43:78:42:49 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:43ff:fe78:4249/64 scope link valid_lft forever preferred_lft forever
#通过Docker0网络联通,由docker0统一管理IP地址,docker0相当于路由器,将容器连通 #--link连通,可以直接通过容器name连通,(新版本已弃用) docker run -d -P --name tomcat03 --link tomcat02 tomcat #原理查看,容器中host目录,添加了对应的目录 docker exec -it tomcat03 cat /etc/hosts 127.18.0.3 tomcat2 s48fesef85e自定义网络
#查看docker网络 docker network ls #移除网络 docker network rm 网络ID #创建一个自定义网络 #--driver bridge 网络模式-桥接 # --subnet 192.168.0.0/16 网络长度 /16:192.168.0.1-192.168.255.255 #--geteway 指定网关IP docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet #创建容器并指定网络 docker run -d -P --name tomcat01 --net mynet tomcat #不同网络之间容器连通容器 #mynet:网络名 tomcat01:其他网络的容器名 docker network connect mynet tomcat01Docker Compose docker-compose命令解析
docker-compose # 拉取镜像 docker-compose up -d nginx # 运行nginx容器 docker-compose up -d # 运行所有容器 docker-compose ps # 查看容器运行状态 docker-compose down # 停止容器和容器网络 docker-compose rm nginx # 删除nginx容器安装
-
下载链接 直接下载下来liunk二进制文件,放入 /usr/local/bin,
-
执行命令 -添加可执行权限
$ sudo chmod +x /usr/local/bin/docker-compos #测试 $ docker-compose --version
- 打包微服务
- dockerfile镜像构建
- docker-compose.yaml编排项目
- 上传服务器运行 docker-compose up
#下载镜像 docker pull portainer/portainer #单机部署 docker run -d -p 9001:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name prtainer portainer/portainerdockerFile执行
//构建镜像命令 docker build -t gatway-bluet:1.0 . //新建并启动容器 docker run -d -p 8070:8070 --name gatway gatway-bluet:1.0



