目录
3.docker启动容器(创建):docker run 参数
4.docker停止容器:docker stop ID或name
5.启动docker容器:docker start ID或name
8.进入容器内部命令:docker exec -it 容器名称 bash
一、安装Docker
在Linux中安装docker CE(社区免费版)
1.下载虚拟机并准备好一个CentOS 7系统
2.你过你之前安装过docker,则需要先移除,执行以下命令
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine;
3.安装一些必要的系统工具(安装所需的软件包),执行以下命令
yum install -y yum-utils device-mapper-persistent-data 1vm2
4.添加软件源信息(阿里云源)
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
5.更新yum缓存
sudo yum makecache fast
6.安装Docker CE
sudo yum -y install docker-ce
7.启动Docker后台服务
systemctl start docker
8.重启Docker服务
systemctl restart docker
Docker镜像加速器
鉴于国内网络问题,后续拉取Docker镜像设、十分缓慢,我们可以需要配置加速器来解决。
1.在/etc/docker/目录下新建daemon.json
vi daemon.json
2.在daemon.json添加如下内容
{
"registry-mirrors":["https://gxeo3yz7.mirror.aliyuncs.com"]
}
3.重启docker文件
systemctl daemon-reload
4.重启docker
systemctl restart docker
5.查看镜像是否生效
docker info
显示如下,表示生效
==============================
二、Docker镜像命令
1.docker列出镜像:docker image ls
2.获取镜像
从docker镜像仓库获取镜像的命令是:docker pull 镜像名
3.docker删除本地镜像
docker image rmi 镜像ID
三、docker容器命令
1.查看运行的镜像:doucker ps
2.查看所有容器:docker ps -a
3.docker启动容器(创建):docker run 参数
-i 启动容器时,运行的命令结束后,容器依然存活,没有退出(默认是会退出,即停止的)
-t 为容器放入标准输入虚拟一个tty
-d 后台运行
--rm 容器启动后,执行停止命令就销毁
--name 给容器起一个自定义名称
-p 宿主机 :内部端口
例,创建一个tomcat容器:docker run -d --name tomcat-8080 -p 8080:8080 tomcat
4.docker停止容器:docker stop ID或name
停止当前所有容器:docker stop $(docker ps -a -q)
5.启动docker容器:docker start ID或name
6.删除容器:docker rm ID或name
7.删除所有容器:
先把所有容器停止:docker stop $(docker ps -a -q)
在删除所有容器:docker rm $(docker ps -a -q)
不停止容器直接删除会报错
8.进入容器内部命令:docker exec -it 容器名称 bash
9.docker 拷贝文件
docker cp 拷贝源 拷贝目的
四、daocker数据卷
1.创建一个tomcat容器并且是数据卷
docker run -d --name tomcat-8080 -p 8080:8080 -v /opt/docker-volumn/qfnj:/usr/local/tomcat/webapps/qfnj tomcat
在宿主机 /opt/docker-volumn/qfnj目录下修改内容,会马上同步到容器/usr/local/tomcat/webapps/qfnj 中
五、docker安装Mysql8.*以前版本
1.下载镜像
docker pull mysql:5.6
2.创建并启动Mysql容器
docker run -d --name mysql-001 -p 3306:3306 -e MYSQL_ROOT_PASSWORD='333' mysql:5.6
设置密码为333
3.进入mysql容器内部
docker exec -it mysql-001 bash
4.登录mysql
mysql -uroot -p333
5.授权其他机器登陆
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '333' WITH GRANT OPTION;
6.刷新权限
FLUSH PRIVILEGES;
7.使用Navicat for MySQL工具连接
六、安装MySQL 8.* 版本
1.下载镜像
docker pull mysql
2.创建并启动Mysql容器
docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=333 mysql
3.进入mysql容器内部
docker exec -it mysql bash
4.登录mysql
mysql -uroot -p333
5.授权其他机器登陆
ALTER USER 'root'@'localhost' IDENTIFIED BY '333';
#参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306
访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=guoweixin:设置 MySQL 服务 root 用户的密码。
七、Docker定制镜像
Dockerfile常用命令
具体用法:
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin/
3.WORKDIR 用来切换工作目录的。
WORKDIR /usr/local/tomcat/
4.RUN
RUN apt-get update
RUN apt-get install -y gcc libc6-dev make
RUN wget http://download.redis.io/releases/redis-4.0.1.tar.gz
RUN tar xzf redis-4.0.1.tar.gz
RUN cd redis-4.0.1
实例,创建一个简单的镜像
mkdir -p /usr/local/docker/demo1
vim Dockerfile
FROM tomcat
RUN mkdir -p /usr/local/tomcat/webapps/ROOT
RUN echo 'Hello java!'>/usr/local/tomcat/webapps/ROOT/index.html
WORKDIR /usr/local/tomcat/webapps/
docker build -t demo1 .
![](https://img-blog.csdnimg.cn/e740febd84614ae6addec6d99cc30215.png)
八、Docker部署SpringBoot项目
1.先准备好一个springboot.jar
2.通过传输工具把jar包传到Linux系统/usr/local/docker/docker-springboot-01目录
3.并创建Dockerfile文件 vi
Dockerfile内容如下
FROM java:8
VOLUME /tmp
ADD docker-springboot-01-0.0.1-SNAPSHOT.jar docker-springboot-01.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker-springboot-01.jar"]
4.构建镜像
docker build -t docker-springboot-01 .
5.查看镜像
6.创建docker-springboot-01容器
九、Idea集成docker实现镜像打包一键部署
执行以下步骤要保证docker服务正在运行
1.docker开启远程访问
#修改该Docker服务文件
vi /lib/systemd/system/docker.service
#修改ExecStart这行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
2.修改完Docker服务文件,执行以下命令
1.#重新加载配置文件
systemctl daemon-reload
2.#重启服务
systemctl restart docker.service
#以上两条命令都执行成功,3/4可不用执行
3.#查看端口是否开启
netstat -nlpt #如果找不到netstat命令,可进行安装。yum install net-tools
4.#直接curl看是否生效
curl http://127.0.0.1:2375/info
3.IDEA中下载Docker插件
打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,
在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。
安装后重启Idea。
4.IDEA配置Docker
连接不成功,需要Linux需要开放2375端口
#查看开放端口
firewall-cmd --list-ports
#开启2375端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
#重启防火墙
firewall-cmd --reload
从新输入连接dockerURL,此时显示连接成功
![](https://img-blog.csdnimg.cn/864118de213b4a8b885fdb5cdeb02b27.png)
6.docker-maven-plugin
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!-- 镜像名称 -->
<imageName>${docker.images.prefix}/${project.artifactId}</imageName>
<!--指定镜像版本号-->
<imageTags>
<imageTag>${project.version}}</imageTag>
</imageTags>
<!-- 基础镜像jdk 1.8-->
<baseImage>java</baseImage>
<!-- 制作者提供本人信息 -->
<maintainer>srz</maintainer>
<!--切换到/ROOT目录 -->
<workdir>/ROOT</workdir>
<cmd>["java", "-version"]</cmd>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
<!--
指定 Dockerfile 路径 <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
-->
<!--指定远程 docker api地址-->
<dockerHost>http://192.168.92.130:2375</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar 包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
7.执行命令,在IDEA中
mvn clean package docker:build
十、IDEA整合Docker CA加密认证
1.创建ca文件夹,存放ca私钥和公钥
mkdir -p /usr/local/cacd /usr/local/ca/
openssl genrsa -aes256 -out ca-key.pem 4096
docker
3.依次输入密码、国家、省、市、组织名称、邮箱
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
密码就是步骤2的密码,剩下的随便输入
4.生成server-key.pem
openssl genrsa -out server-key.pem 4096
5.ca来签署公钥
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
6.配置白名单
如果填写的是 ip 地址 命令如下 echo subjectAltName = IP:$HOST,IP:0.0.0.0 >> extfile.cnf如果填写的是域名 命令如下 echo subjectAltName = DNS:$HOST,IP:0.0.0.0 >> extfile.cnf
7.执行命令
echo extendedKeyUsage = serverAuth >> extfile.cnf
8.生成签名证书
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf
9.生成客户端的key.pem
openssl genrsa -out key.pem 4096openssl req -subj '/CN=client' -new -key key.pem -out client.csr
10.要使用秘钥适合客户端身份验证
创建扩展配置文件:
echo extendedKeyUsage = clientAuth >> extfile.cnfecho extendedKeyUsage = clientAuth > extfile-client.cnf
11.生成签名证书
生成cert.pem,需要输入前面设置的密码docker
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile-client.cnf
12.删除不需要的文件,两个证书签名请求
rm -v client.csr server.csr extfile.cnf extfile-client.cnf
13.修改权限
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
14.归集服务器证书
cp server-*.pem /etc/docker/cp ca.pem /etc/docker/
15.修改Docker配置
vim /lib/systemd/system/docker.service将 ExecStart=/usr/bin/dockerd替换为:ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
![](https://img-blog.csdnimg.cn/7e87dbff94d144398ef1e4dd5255bb5c.png)
16重新加载daemon并重启docker
systemctl daemon-reloadsystemctl restart docker
17.开放2375端口
/sbin/iptables -I INPUT -p tcp --dport 2375 -j ACCEPT
18,重启docker
systemctl restart docker
19.保存相关客户端的pem文件到本地
在本地计算机d盘下新建docker/ca目录,并用传输工具把Linux上的文件传到本地
20.IDEA中配置