On this page
Docker
Docker Desktop安装注意
修改镜像源
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}修改镜像存放位置
WSL虚拟环境
参考
Docker命令
拉取镜像
docker pull [NAME]:[TAG]查看容器日志
docker logs [容器名称]- 查看所有镜像
docker images- 查看所有容器
docker ps- 进入运行中的容器
docker exec -it [容器ID] /bin/sh查看容器的端口映射
docker port [容器ID]- 将容器打包成镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# OPTIONS参数说明;
#-a :提交的镜像作者;
#-c :使用Dockerfile指令来创建镜像;
#-m :提交时的说明文字;
#-p :在commit时,将容器暂停docker network
# 查看所有网络
docker network ls
# 创建网络,并固定IP范围,只有使用了subnet才可以使容器在启动时指定ip
docker network create --subnet=172.11.0.0/20 [网络名称]
# 删除网络
docker network rm [网络ID]
#将容器添加进网络中
docker network connect [网络名称] [容器名称]
#将容器从网路中一处
docker network disconnect [网络名称] [容器名称]
#查看对应网络详情
docker network inspect [网络名称]docker cp
复制宿主机的文件到容器
docker cp [宿主机文件路径] [容器名称]:[容器文件夹]复制容器文件到宿主机
docker cp [容器名称]:[容器文件] [宿主机文件路径]
如果需要复制文件夹下所有文件而不是文件夹本身,使用
/.结尾
docker run
- -p <对外端口>:<Docker内部端口> 端口映射
- –name <容器名称> 定义容器名称
- –net <网络名称> 指定网络
- –ip <IP地址> 在网络中指定ip地址,该网络创建时必须带–subnet参数
- -e “<参数名称>=<参数值>” 定义环境变量
- -v [宿主机文件路径]:[容器文件路径] 容器文件路径,必须是在创建镜像时配置好的才可以使用,不是所有路径都可以的
- –link <映射名称>:<镜像名称> 内部连接,如Springboot项目连接Docker内部的Mysql,可使用此来进行连接
#使用后的mysql url:jdbc:mysql://mysql:3306/fool
--link mysql:mysql常用镜像命令
mysql
容器名称 mysql
宿主机访问使用端口3307
root账号密码123456
忽略大小写
使用fool网络,并固定ip172.18.0.4
docker run -d --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --net fool --ip 172.18.0.4 mysql:latest --lower_case_table_names=1导出指定database数据
docker exec -it [容器名称] mysqldump -u[用户名] -p[密码] [database] > [保存到本地的SQL文件地址]导出全部数据以及表结构
docker exec -it [容器名称] mysqldump -u[用户名] -p[密码] --all-databases > [保存到本地的SQL文件地址]redis
带密码启动(密码:123456)
宿主机访问使用端口6380
使用fool网络,需要先创建fool网络
固定fool中的ip为172.18.0.3,使用固定IP,网络创建时必须带–subnet参数指定网段
docker run -itd --name redis -p 6380:6379 --net fool --ip 172.18.0.3 redis --requirepass 123456rabbitmq
rabbitmq默认不开启管理页面,需要在控制执行命令打开
rabbitmq-plugins enable rabbitmq_managementminio
末尾的/data是指定minio文件存储位置(容器内部的位置)
将数据挂载在D盘data文件夹,配置文件挂载在D盘minio/config文件夹下
docker run -p 8000:9000 -p 8001:9001 --name minio -v D:\data:/data -v D:\minio\config:/root/.minio minio/minio server --console-address ":9000" --address ":9001" /dataDockerfile
- ARG, 用于build时添加的参数,使用时带上 –build-arg
FROM openjdk:8u272
ARG DEPENDENCY
ADD ${DEPENDENCY}livoltek_email_demo-0.0.1-SNAPSHOT.jar email.jar
EXPOSE 9999
ENTRYPOINT ["java", "-jar" ,"email.jar","--spring.profiles.active=${PROFILE}"]使用
docker build -t --build-arg DEPENDENCY=D:\ email:1.0.0 .Centos安装Docker
下载安装包安装
下载安装包
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-20.10.9-3.el7.x86_64.rpm安装
sudo yum install docker-ce-20.10.9-3.el7.x86_64.rpm可能会报错
Error: Package: containerd.io-1.6.4-3.1.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2:2.74
Available: 2:container-selinux-2.42-1.gitad8f0f7.el7.noarch (extras)
container-selinux = 2:2.42-1.gitad8f0f7.el7
Available: 2:container-selinux-2.55-1.el7.noarch (extras)
container-selinux = 2:2.55-1.el7
Available: 2:container-selinux-2.66-1.el7.noarch (extras)
container-selinux = 2:2.66-1.el7
Error: Package: 3:docker-ce-20.10.9-3.el7.x86_64 (/docker-ce-20.10.9-3.el7.x86_64)
Requires: container-selinux >= 2:2.74
Available: 2:container-selinux-2.42-1.gitad8f0f7.el7.noarch (extras)
container-selinux = 2:2.42-1.gitad8f0f7.el7
Available: 2:container-selinux-2.55-1.el7.noarch (extras)
container-selinux = 2:2.55-1.el7
Available: 2:container-selinux-2.66-1.el7.noarch (extras)
container-selinux = 2:2.66-1.el7
Error: Package: docker-ce-rootless-extras-20.10.15-3.el7.x86_64 (docker-ce-stable)
Requires: fuse-overlayfs >= 0.7
Error: Package: docker-ce-rootless-extras-20.10.15-3.el7.x86_64 (docker-ce-stable)
Requires: slirp4netns >= 0.4
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest复制第一个报错后面的依赖名称(这里是containerd.io-1.6.4-3.1.el7.x86_64),复制,依赖查找地址 Download
下载安装依赖
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.4-3.1.el7.x86_64.rpm安装依赖
yum -y install containerd.io-1.6.4-3.1.el7.x86_64.rpm如果依赖安装也报错,那么安装一下依赖
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release -y
yum install container-selinux -y然后继续安装containerd.io-1.6.4-3.1.el7.x86_64
yum install containerd.io-1.6.4-3.1.el7.x86_64.rpm最后安装Docker
yum install docker-ce-20.10.9-3.el7.x86_64.rpm参考
制作Springboot项目镜像
- pom.xml修改spring-boot-maven-plugin,configuration下添加layers
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
</plugin>- 制作Dockerfile文件
dockerfile必须与demo-0.0.1-SNAPSHOT.jar在同一目录下
${PROFILE}可通过docker命令-e在进行参数传递
FROM java:11.0.11
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
EXPOSE 7777
ENTRYPOINT ["java","-jar","demo.jar","--spring.profiles.active=${PROFILE}"]- 运行镜像制作命令
#必须在dockerfile目录下运行此命令
#demo 为镜像名称,1.0.0.Beta为镜像版本
docker build -t demo:1.0.0.Beta .- 运行镜像
#--link可以让此镜像可以连接其他镜像
#-e 后面可跟随需要传递的参数
#-p 端口映射,[对外端口]:[内部端口]
docker run -d -e "PROFILE=docker" --name demo --link redis:redis --link mysql:mysql -p 6667:6666 demo:1.0.0.Beta制作带项目的Tomcat镜像
Dockerfile
FROM tomcat:9.0.44-jdk8
# 创建tomcat用户
ADD tomcat-users.xml conf/tomcat-users.xml
# Linux下tomcat不放manager.xml 可能无法访问项目管理
ADD manager.xml conf/Catalina/localhost/manager.xml
# 在版本9以上时,docker镜像下webapps下面是没有东西的,东西都在webapps.dist下,所以需要删除源webapps,重命名webapps.dist
RUN rm -rf webapps && mv webapps.dist webapps
ADD email.war webapps/email.war
EXPOSE 8080
CMD ["bin/catalina.sh", "run"]tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<user username="admin" password="1234" roles="manager-gui"/>
</tomcat-users>manager.xml
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>ShardingSphere-Proxy镜像
- 下载并解压ShardingSphere-Proxy
- 准备Dockerfile
FROM openjdk:8
COPY apache-shardingsphere-5.3.1-shardingsphere-proxy-bin /usr/local/shardingsphere-proxy
COPY mysql-connector-java-8.0.29.jar /usr/local/shardingsphere-proxy/ext-lib/
WORKDIR /usr/local/shardingsphere-proxy
EXPOSE 3307
ENTRYPOINT bin/start.sh && tail -10f /usr/local/shardingsphere-proxy/logs/stdout.log- 将Dockerfile和解压后的ShardingSphere-Proxy文件夹放在同一目录下
- 在Dockerfile目录下运行build命令
docker build -t proxy:1.0.0 .- 运行镜像
docker run -d -p 3309:3307 --net migration --name proxy -v D:\Work\WorkSpace\dockerfile\shardingsphere-proxy\conf:/usr/local/shardingsphere-proxy/conf proxy:1.0.0