docker笔记
1、docker安装 (使用centos7或者centos8都行)
-
检查删除系统之前docker的残留(新系统略过)
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine; #如果yum报告都没安装过,就行。
-
安装docker必要的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加docker的软件源(阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
添加完在/etc/yum.repo目录下,更新一下yum的缓存,建立元数据
yum makecache fast
-
下载docker-ce、启动docker
yum install -y docker-ce、systemctl start docker systemctl enable docker #开机自启docker
-
查看docker版本
docker version
-
卸载docker
yum remove docker-ce rm -rf /var/lib/docker
2、docker镜像加速器
-
进入/etc/docker目录下,修改或创建daemon.json
例子{
“registry-mirrors”: [“https://bt4ccuu4.mirror.aliyuncs.com”]
}//这是我的的镜像加速器地址
-
重启生效
systemctl daemon-reload systemctl restart docker
-
检测加速器是否生效
docker info
... Registry Mirrors: https://bt4ccuu4.mirror.aliyuncs.com/ #最底下显示镜像地址就是生效 Live Restore Enabled: false
3、docker镜像命令 docker镜像:[https://hub.docker.com/]
-
拉取镜像
docker pull 镜像名称[:标签] #标签里填写你所要的版本,不填默认是latest最新的 docker pull ngnix:1.20 #拉取指定版本ngnix1.20版本的镜像
-
显示所有镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 88736fe82739 2 weeks ago 142MB tomcat latest 1ca69d1bf49a 2 weeks ago 474MB 镜像名 版本号 镜像id 最近更新时间 大小
-
删除镜像
docker rmi 镜像id #删除镜像前必须确认此镜像没有被容器使用
-
导入导出镜像
docker save --help #查看save命令帮助文档 docker save -o nacos.tar nacos/nacos-server:latest #将docker中的镜像导出到Linux中,会得到一个nacos.tar文件 docker load -i nacos.tar #将本地镜像压缩包导入到docker中
4、docker容器
-
创建并启动容器
docker run 参数 镜像名称:tag 执行的命令 常用参数:-d 后台运行容器 --rm 容器在启动后,容器关闭后就自动销毁该容器 --name 给容器自定义一个名称 -p 宿主机:内部端口
docker run -d --name tomcat8080 -p 8080:8080 tomcat docker run -d --name tomcat1 -p 8081:8080 --rm tomcat docker run -id --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 #创建mysql镜像要设置密码 docker run --name redis-test -p 6379:6379 -d --restart=always redis:latest redis-server --appendonly yes --requirepass 'admin' #创建docker容器 # -p 6379:6379 :将容器内端口映射到宿主机端口(右边映射到左边) #redis-server –appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置 #requirepass “admin” :设置认证密码 #–restart=always : 随docker启动而启动
-
停止容器
docker stop $(docker ps -a -q) #停止所有容器 docker stop 容器id或容器名 #停止指定容器 docker start 容器id或容器名 #启动指定停掉的容器
-
删除容器
docker rm 容器id或容器名 #删除容器前要保证容器停止状态 docker rm $(docker ps -a -q) #s
-
查看容器状态
docker ps #查看运行的容器 docker ps -a #查看所有的容器
5、CenterOS防火墙端口
-
查看已经放行的端口
firewall-cmd --list-ports
-
开启端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
-
关闭端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
6、Docker进入容器
-
进入容器
docker exec -it 容器id/容器名 bash #案例 docker exec -it tomcat8080 bash docker exec -it nginx80 bash docker exec -it 9ccc redis-cli -a admin #进入redis容器,执行redis客户端 9ccc为redis的镜像id #进入redis容器第二种方式 docker exec -it 9ccc redis-cli #然后输入密码 Auth 密码 docker exec -it 9ccc redis-cli #进入不带密码的客户端 exit #退出
-
在宿主机和容器之间交换文件
docker cp [OPTIONS] CONTAINER:PATH LOCALPATH #容器中 复制到 宿主机 docker cp [OPTIONS] LOCALPATH- CONTAINER:PATH #宿主机 复制到 容器中 #实例: docker cp tomcat-8081:/usr/local/tomcat/webapps/ROOT/index.html /root/公共/aaa docker cp /root/公共/aaa/index.html tomcat-8081:/usr/local/tomcat/webapps/ROOT docker cp 1.jpg tomcat-8081:/usr/local/tomcat/webapps/ROOT #图片复制到容器中
-
查看日志
docker logs 容器id/容器名
-
数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,数据卷改变后,每个使用数据卷的docker容器数据也会实时改变#案例 docker run -d --privileged=true -p 9000:9000 -p 9001:9001 --name my-minio -v /mnt/minio/data:/data -v /mnt/minio/config:/root/.minio -e "MINIO_ROOT_USER=minio" -e "MINIO_ROOT_PASSWORD=admin123" minio/minio server /data --console-address ":9001" #docker创建minio容器 vi /tmp/exam/index.htm #创建数据卷 docker run -d --name tomcat8080 -p 8080:8080 -v /tmp/exam:/usr/local/tomcat/webapps/exam tomcat # 创建tomcat8080容器,并将/tmp/exam目录写入容器中 docker run -d --name tomcat8081 -p 8081:8080 -v /tmp/exam:/usr/local/tomcat/webapps/exam tomcat # 创建tomcat8081容器,并将/tmp/exam目录写入容器中 docker run -d --name tomcat8082 -p 8082:8080 -v /tmp/exam:/usr/local/tomcat/webapps/exam tomcat # 创建tomcat8082容器,并将/tmp/exam目录写入容器中 #更改/tmp/exam/index.html 三个容器中数据同时改变,删除容器数据卷的数据也不会改变
7、idea集成docker实现镜像打包一键部署
-
docker开启远程访问
#修改docker服务文件 vi /lib/systemd/system/docker.service #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
systemctl daemon-reload #重新加载配置文件 systemctl restart docker.service #重启docker服务
-
idea中快速配置
首先要去下载docker插件
docker配置
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <--添加maven-docker-plugin插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <dockerHost>http://192.168.197.129:2375</dockerHost> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <imageTags> <imageTag>${project.version}</imageTag> </imageTags> <baseImage>java</baseImage> <!--作者信息--> <maintainer>docker_maven docker_maven@email.com</maintainer> <workdir>/ROOT</workdir> <cmd>["java", "-version"]</cmd> <entryPoint>["java", "-jar", "${project.build.finalName}.jar"] </entryPoint> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/ROOT</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
执行:
查看镜像是否创建成功:
创建容器