Docker 安装、优化
- yum 包更新到最新
docker官网查找帮助文档:https://docs.docker.com/ ```shell
首先卸载旧的docker
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine \
安装依赖环境
sudo yum install -y yum-utils sudo yum-config-manager \ —add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
设置镜像的仓库默认为国外,我们设置为阿里云的
sudo yum-config-manager \ —add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker相关的程序
安装前更新yum源索引
sudo yum makechche fash
docker-ce表示社区版本,ee表示企业版的
sudo yum install docker-ce docker-ce-cli containerd.io
安装完成查看版本
docker —version
阿里云镜像加速
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-‘EOF’ { “registry-mirrors”: [“https://1rv6wrt6.mirror.aliyuncs.com“] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
Docker卸载
sudo yum remove docker-ce docker-ce-cli containerd.io
删除目录**/var/lib/docker(资源目录都在下边)
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
<a name="1HJsP"></a># 目录/var/lib/docker修改Docker本地镜像与容器的存储位置的方法(最简单方便)```powershell#首先停掉Docker服务:systemctl stop docker#然后移动整个/var/lib/docker目录到目的路径mv /var/lib/docker /home/docker#建立软连接ln -s /home/docker /var/lib/docker#如果是删除的话就需要删除安装的目录后再次创建软连接rm -rf /var/lib/dockerln -s /home/docker /var/lib/docker#重启docker
Docker创建容器常用命令
进阶命令
docker run -d centos -d 容器使用后台运行,容器启动后发现自己没有服务就会自动停止docker logs -f -t --tail 10 id 查看最近的10条日志 -f动态显示,-t 时间戳docker top 命令 显示,查看容器中的进程docker inspect ID 查看容器的详细信息
docker run [可选参数] image
--name="NAME"
-d 后台运行
-i 使用交互方式,进入容器
-p 指定容器端口
-P 指定随机端口
进入当前正在运行的容器
docker exec -it 容器ID /bin/bash 进入后开启一个新的终端
docker attach 容器ID 进入到正在执行的命令终端,不会启动新的
文件拷贝
从容器内拷贝文件到主机内
docker cp 容器ID:/home/text.java /home/app
docker run -it --rm tomcat:9.0 --rm的作用为:用完就删除
docker exec -it tomcat01 /bin/bash 进入正处再运行的容器中
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
--net somenetwork:配置网络使用
添加内存限制:-e添加环境参数配置修改 ES_JAVA_OPST="-Xms64m -Xmx512m"
docker stats :查看cpu的状态
Portainer,Rancher可视化工具(docker)
docker run -d -p 3344:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer /portainer
如果你共享的是多级的目录,可能会出现权限不足的提示。
这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数
—privileged=true 来解决挂载的目录没有权限的问题
Docker网络
ip addr命令查看看网卡docker0网卡
8: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:e4:92:48:48 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:e4ff:fe92:4848/64 scope link
valid_lft forever preferred_lft forever
实验
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat
#-d 后台 -P 随机端口映射
docker exec -it tomcat01/ tomcat01 ip addr
#显示结果:
58: eth0@if59: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
60: eth0@if61: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
#看到默认的网卡为172.17.0.2/172.17.0.3
容器之间可以相互ping使用IP,但是名称不可以
—link(不推荐使用)
docker run -d -P tomcat03 --link tomcat01
这样的话tomcat03可以ping通tomcat01,反之不能,docker0网卡不支持名称访问
—link就是在虚拟机的host文件中添加了解析
docker network 命令 —help
Commands:
connect Connect a container to a network
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks
docker network inspect a2dca5799b77(网卡id)
#默认使用的是bridge网卡,172.17.0.1 docker0
"Containers": {
"7fbc67821b271a2ea9b6b81cddb915f39c1cdefe3be582bc106ee20ae769a1aa": {
"Name": "tomcat01",
"EndpointID": "6df2108741698006dea724d5d66568da471f30d4a2cccaef416918dba25f45fa",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
},
"d91770453bf5ecc1c69c43e2edece7c8bc2d3c4596101d0736cb990f61181898": {
"Name": "tomcat02",
"EndpointID": "faaf9e4eb6dddbacfa254b51e61e5bd952492c010f3252f67934f2807cd94e6b",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
}
},
自定义网络互联
docker network ls
NETWORK ID NAME DRIVER SCOPE
a2dca5799b77 bridge bridge local
0ecd182ec6cb host host local
35c6f8d55f55 hyfnet bridge local
af8068e7a1ab none null local
- bridge 桥接模式
- none 不配置网络,自己定
- host 主机模式,和宿主机共享网络
- container 容器内网络连通
测试:
#测试 docker run -d -P --name romcat03 --net birdge (--ip 192.168.0.1)tomcat #自定义一个网络 docker network create --help docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 hyfnetconnect 连接一个容器到一个网络
```shell docker network connect—help
Usage: docker network connect [OPTIONS] NETWORK CONTAINER Connect a container to a network Options: —alias strings Add network-scoped alias for the container —driver-opt strings driver options for the network —ip string IPv4 address (e.g., 172.30.100.104) —ip6 string IPv6 address (e.g., 2001:db8::33) —link list Add link to another container —link-local-ip strings Add a link-local address for the container
依照命令为:
docker network connect hyfnet tomcat01
连通后就是把tomcat01 放到了hfynet下,tomcat01中多了一张网卡
[root@nysql ~]# docker exec -it tomcat01 ip addr
1: lo:
<a name="1C0Mi"></a>
# SpringBoot微服务打包Docker
<a name="jd6wu"></a>
#### 项目打包
- 将打包好的jar拷贝,本地测试,成功后
`java -jar demo-springboot.jar`
- 编写docker file
```shell
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT["java","-jar","/app.jar"]
- 拷贝文件和DockerFile文件到服务器后
docker build -t hyfSpringBoot .
- 运行
docker run -d -P --name text01 hyfSpringBoot
- CURL测试完成
