Docker实战笔记
部署Nginx
- 搜索镜像
# 搜索镜像
[root@iZwz9a69mvjujb826ezp71Z ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 17536 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 178
bitnami/nginx Bitnami nginx Docker Image 141 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 63
bitnami/nginx-ingress-controller Bitnami Docker Image for NGINX Ingress Contr… 20 [OK]
rancher/nginx-ingress-controller 11
webdevops/nginx Nginx container 10 [OK]
ibmcom/nginx-ingress-controller Docker Image for IBM Cloud Private-CE (Commu… 4
bitnami/nginx-ldap-auth-daemon 3
bitnami/nginx-exporter 3
vmware/nginx 2
rancher/nginx-ingress-controller-defaultbackend 2
rapidfort/nginx RapidFort optimized, hardened image for NGINX 2
kasmweb/nginx An Nginx image based off nginx:alpine and in… 2
rancher/nginx 2
bitnami/nginx-intel 1
wallarm/nginx-ingress-controller Kubernetes Ingress Controller with Wallarm e… 1
vmware/nginx-photon 1
rancher/nginx-conf 0
rapidfort/nginx-ib RapidFort optimized, hardened image for NGIN… 0
ibmcom/nginx-ingress-controller-ppc64le Docker Image for IBM Cloud Private-CE (Commu… 0
rancher/nginx-ssl 0
continuumio/nginx-ingress-ws 0
rancher/nginx-ingress-controller-amd64 0
ibmcom/nginx-ppc64le Docker image for nginx-ppc64le 0
- 下载镜像
[root@iZwz9a69mvjujb826ezp71Z ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
# 查看下本地镜像
[root@iZwz9a69mvjujb826ezp71Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 9 months ago 141MB
centos latest 5d0da3dc9764 13 months ago 231MB
- 创建并运行镜像
[root@iZwz9a69mvjujb826ezp71Z ~]# docker run -d --name nginx01 -p 3344:80 nginx
fc4b4681cc23c4ab61e9498191c4a2df8338cdc460cd6f3832a6f487c0ea622e
# -d 后台运行
# -name 给容器命名
# -p 指定端口 [主机端口]:[容器内端口]
# 查看镜像列表
[root@iZwz9a69mvjujb826ezp71Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc4b4681cc23 nginx "/docker-entrypoint.…" 7 seconds ago Up 5 seconds 0.0.0.0:3344->80/tcp nginx01
[root@iZwz9a69mvjujb826ezp71Z ~]#
- 查看是否运行成功
- 进入到容器中查看
# 以exec命令回到容器中
[root@iZwz9a69mvjujb826ezp71Z ~]# docker exec -it fc4b4681cc23 /bin/bash
root@8b25ee190c6c:/# ls
bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint.d etc lib media opt root sbin sys usr# 进入到/usr/share/nginx/html/,这就是静态资源的文件夹
root@8b25ee190c6c:/# cd /usr/share/nginx/html/
root@8b25ee190c6c:/usr/share/nginx/html# ls
50x.html index.html# 进入到etc/nginx/,配置文件nginx.conf就在这个文件夹下
root@8b25ee190c6c:/# cd etc/nginx/
root@8b25ee190c6c:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
root@8b25ee190c6c:/etc/nginx# cat nginx.conf user nginx;
worker_processes auto;error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;
}# 进入到/var/log/nginx文件夹中,这里存放的就是nginx的日志文件
root@7f93e0a9e5a6:/etc# cd /var/log/nginx
root@7f93e0a9e5a6:/var/log/nginx# ls
access.log error.log
- 重新启动一个nginx,将配置文件夹、静态资源文件夹、日志文件夹挂载出来
# 这里如果宿主机没有对应的文件夹,请先创建文件夹
[root@iZwz9a69mvjujb826ezp71Z nginx]# docker run -d --name nginx -p 80:80 -v /usr/local/nginx/conf:/etc/nginx -v /usr/local/nginx/html:/usr/nginx/html -v /usr/local/nginx/logs:/var/log/nginx nginx
- 登录网站验证
部署Tomcat
- 官方运行建议 docker run -it --rm -p 8888:8080 tomcat:9.0
- 我们之前的启动都是后台,停止容器之后,容器还是可以查到,而docker run -it -rm,一般用来测试,用完就删除
# 官方方式启动
[root@iZwz9a69mvjujb826ezp71Z ~]# docker run -it --rm -p 8888:8080 tomcat:9.0
Unable to find image 'tomcat:9.0' locally
9.0: Pulling from library/tomcat
0e29546d541c: Pull complete
9b829c73b52b: Pull complete
cb5b7ae36172: Pull complete
6494e4811622: Pull complete
668f6fcc5fa5: Pull complete
dc120c3e0290: Pull complete
8f7c0eebb7b1: Pull complete
77b694f83996: Pull complete
7662046c36cb: Pull complete
b93639122cb4: Pull complete
Digest: sha256:cd96d4f7d3f5fc4d3bc1622ec678207087b8215d55021a607ecaefba80b403ea
Status: Downloaded newer image for tomcat:9.0
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/openjdk-11
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
18-Oct-2022 14:51:40.604 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.56
18-Oct-2022 14:51:40.613 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Dec 2 2021 14:30:07 UTC
18-Oct-2022 14:51:40.614 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.56.0
18-Oct-2022 14:51:40.616 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
18-Oct-2022 14:51:40.617 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 4.19.34-11.al7.x86_64
18-Oct-2022 14:51:40.617 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
18-Oct-2022 14:51:40.619 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/local/openjdk-11
18-Oct-2022 14:51:40.620 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.13+8
18-Oct-2022 14:51:40.620 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
18-Oct-2022 14:51:40.621 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
18-Oct-2022 14:51:40.622 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
18-Oct-2022 14:51:40.654 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
18-Oct-2022 14:51:40.655 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
18-Oct-2022 14:51:40.655 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
18-Oct-2022 14:51:40.656 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
18-Oct-2022 14:51:40.657 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
18-Oct-2022 14:51:40.657 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
18-Oct-2022 14:51:40.658 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
18-Oct-2022 14:51:40.658 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
18-Oct-2022 14:51:40.660 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
18-Oct-2022 14:51:40.660 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
18-Oct-2022 14:51:40.660 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
18-Oct-2022 14:51:40.661 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
18-Oct-2022 14:51:40.663 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
18-Oct-2022 14:51:40.663 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
18-Oct-2022 14:51:40.707 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.31] using APR version [1.7.0].
18-Oct-2022 14:51:40.709 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
18-Oct-2022 14:51:40.710 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
18-Oct-2022 14:51:40.762 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1k 25 Mar 2021]
18-Oct-2022 14:51:41.852 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
18-Oct-2022 14:51:41.934 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [1976] milliseconds
18-Oct-2022 14:51:42.193 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
18-Oct-2022 14:51:42.195 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.56]
18-Oct-2022 14:51:42.247 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
18-Oct-2022 14:51:42.293 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [356] milliseconds
^C18-Oct-2022 14:52:12.582 INFO [Thread-2] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
18-Oct-2022 14:52:12.602 INFO [Thread-2] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
18-Oct-2022 14:52:12.609 INFO [Thread-2] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
18-Oct-2022 14:52:12.617 INFO [Thread-2] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
# ctrl + c 退出后查询运行中容器,发现没有tomcat
[root@iZwz9a69mvjujb826ezp71Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc4b4681cc23 nginx "/docker-entrypoint.…" 30 minutes ago Up 30 minutes 0.0.0.0:3344->80/tcp nginx01
[root@iZwz9a69mvjujb826ezp71Z ~]#
- 下载启动
# 下载tomcat
[root@iZwz9a69mvjujb826ezp71Z ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
0e29546d541c: Already exists
9b829c73b52b: Already exists
cb5b7ae36172: Already exists
6494e4811622: Already exists
668f6fcc5fa5: Already exists
dc120c3e0290: Already exists
8f7c0eebb7b1: Already exists
77b694f83996: Already exists
0f611256ec3a: Pull complete
4f25def12f23: Pull complete
Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
# 查看下载好的镜像
[root@iZwz9a69mvjujb826ezp71Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 9 months ago 141MB
tomcat 9.0 b8e65a4d736d 9 months ago 680MB
tomcat latest fb5657adc892 9 months ago 680MB
centos latest 5d0da3dc9764 13 months ago 231MB
# 创建并启动容器
[root@iZwz9a69mvjujb826ezp71Z ~]# docker run -d --name tomcat01 -p 3344:8080 tomcat
96ccd7b2ce91f7226fbe20d078463f2ecc2503420d44f919fd382b2871489ac6
# 查看运行容器列表
[root@iZwz9a69mvjujb826ezp71Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96ccd7b2ce91 tomcat "catalina.sh run" 14 seconds ago Up 12 seconds 0.0.0.0:3344->8080/tcp tomcat01
- 运行成功,访问下3344端口,发现部署成功,但是404
- 原因:docker官方的tomcat是阉割的,进入容器查看
# 进入容器查看
[root@iZwz9a69mvjujb826ezp71Z ~]# docker exec -it 96ccd7b2ce91 /bin/bash
# 查看文件夹列表,发现有webapps和webapps.dist
root@96ccd7b2ce91:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
# 进入webapps下查看,发现是空的
root@96ccd7b2ce91:/usr/local/tomcat# cd webapps
root@96ccd7b2ce91:/usr/local/tomcat/webapps# ls
root@96ccd7b2ce91:/usr/local/tomcat/webapps#
# 进入webapps.dist下查看,发现有应该在webapps的文件
root@96ccd7b2ce91:/usr/local/tomcat/webapps# cd ..
root@96ccd7b2ce91:/usr/local/tomcat# cd webapps.dist/
root@96ccd7b2ce91:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
# 将webapps.dist文件夹下的文件拷贝到webapps
root@96ccd7b2ce91:/usr/local/tomcat/webapps.dist#
root@96ccd7b2ce91:/usr/local/tomcat/webapps.dist# cd ..
root@96ccd7b2ce91:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@96ccd7b2ce91:/usr/local/tomcat# cd webapps
root@96ccd7b2ce91:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
- 刷新界面,发现不是404了
部署ES
- es暴露的端口多
- es十分耗内存
- es的数据一般需要放置到安全目录!挂载
- –net somenetwork ? 网络配置
- 运行命令
# 下载启动elasticsearch
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
部署MySQL
- 思考:MySQL的数据持久化的问题
- 官方启动命令:docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
[root@VM-0-10-centos ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7# 运行容器时,需要做数据挂载
# 安装启动MySQL的时候需要配置密码的 -e MYSQL_ROOT_PASSWORD=123456 就是将密码设置为123456
[root@VM-0-10-centos ~]# docker run -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
2022-10-22 11:42:56+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
2022-10-22 11:42:56+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2022-10-22 11:42:56+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
2022-10-22 11:42:56+00:00 [Note] [Entrypoint]: Initializing database files
mysqld: Out of memory (Needed 4294967200 bytes)
......
2022-10-22T11:43:06.614841Z 0 [Note] Event Scheduler: Loaded 0 events
2022-10-22T11:43:06.615231Z 0 [Note] mysqld: ready for connections.
Version: '5.7.36' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)# 查看服务器的/home/data文件夹
[root@VM-0-10-centos ~]# cd /home/data
[root@VM-0-10-centos data]# ls
auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem
ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys
ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem
- 测试:用GUI工具远程连接MySQL之后创建一个test库
- 回到服务器上查看/home/data文件夹
# 多了test文件夹,这是test库的数据
[root@VM-0-10-centos data]# ls
auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem
ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys
ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem test
- 卸载MySQL容器,数据文件还在
# 卸载MySQL容器
[root@VM-0-10-centos data]# docker rm -f mysql01
mysql01
[root@VM-0-10-centos data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# 查看数据文件,数据文件还在
[root@VM-0-10-centos data]# ls
auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem
ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys
ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem test
构建自己的centOS
# 创建dockerfile文件
[root@VM-0-10-centos ~]# cd /home/
[root@VM-0-10-centos home]# ls
data docker-test-volume mysql
[root@VM-0-10-centos home]# clear
[root@VM-0-10-centos home]# mkdir dockerfile
[root@VM-0-10-centos home]# ls
data dockerfile docker-test-volume mysql
[root@VM-0-10-centos home]# cd dockerfile/
[root@VM-0-10-centos dockerfile]# ls
[root@VM-0-10-centos dockerfile]# vim mydockerfile# 编写dockerfile文件
FROM centos:7MAINTAINER suanbai<76417647@qq.com>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80# 下面前两个CMD是不生效的,只有最后一行CMD是生效的
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash# 通过文件构建镜像
[root@VM-0-10-centos dockerfile]# docker build -f mydockerfile -t mycentos:0.1 .
Sending build context to Docker daemon 2.048kB
Step 1/10 : FROM centos---> 5d0da3dc9764
Step 2/10 : MAINTAINER suanbai<76417647@qq.com>---> Running in bdd6ddb7ed00
Removing intermediate container bdd6ddb7ed00---> e1c11a680505
Step 3/10 : ENV MYPATH /usr/local---> Running in 2226c278e873
Removing intermediate container 2226c278e873---> 3498e2e43758
Step 4/10 : WORKDIR $ MYPATH---> Running in 5af02223ab78
Removing intermediate container 5af02223ab78---> e2287f1dc69e
Step 5/10 : RUN yum -y install vim---> Running in a96b6819d273
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
CentOS Linux 8 - AppStream 73 B/s | 38 B 00:00
The command '/bin/sh -c yum -y install vim' returned a non-zero code: 1
[root@VM-0-10-centos dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> e2287f1dc69e About a minute ago 231MB
sunbai/centos 1.0 5571c282f543 7 hours ago 231MB
nginx latest 605c77e624dd 9 months ago 141MB
mysql 5.7 c20987f18b13 10 months ago 448MB
centos latest 5d0da3dc9764 13 months ago 231MB
[root@VM-0-10-centos dockerfile]# vim mydockerfile
[root@VM-0-10-centos dockerfile]# docker build -f mydockerfile -t mycentos:0.1 .
Sending build context to Docker daemon 2.048kB
Step 1/10 : FROM centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Status: Downloaded newer image for centos:7---> eeb6ee3f44bd
Step 2/10 : MAINTAINER suanbai<76417647@qq.com>---> Running in 1b92bb747079
Removing intermediate container 1b92bb747079---> 1cc0d4f06453
Step 3/10 : ENV MYPATH /usr/local---> Running in 7754179a8c48
Removing intermediate container 7754179a8c48---> d18e2e898aee
Step 4/10 : WORKDIR $ MYPATH---> Running in 7ffdc5253440
Removing intermediate container 7ffdc5253440---> b430a2aa285b
Step 5/10 : RUN yum -y install vim---> Running in b83f42ac8d51
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package vim-enhanced.x86_64 2:7.4.629-8.el7_9 will be installed
--> Processing Dependency: vim-common = 2:7.4.629-8.el7_9 for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Processing Dependency: which for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Processing Dependency: perl(:MODULE_COMPAT_5.16.3) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Processing Dependency: libperl.so()(64bit) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Processing Dependency: libgpm.so.2()(64bit) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Running transaction check
---> Package gpm-libs.x86_64 0:1.20.7-6.el7 will be installed
---> Package perl.x86_64 4:5.16.3-299.el7_9 will be installed
--> Processing Dependency: perl(Socket) >= 1.3 for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Scalar::Util) >= 1.10 for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl-macros for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(threads::shared) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(threads) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(constant) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Time::Local) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Time::HiRes) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Storable) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Socket) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Scalar::Util) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Pod::Simple::XHTML) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Pod::Simple::Search) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Getopt::Long) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Filter::Util::Call) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Temp) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec::Unix) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec::Functions) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Path) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Exporter) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Cwd) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Carp) for package: 4:perl-5.16.3-299.el7_9.x86_64
---> Package perl-libs.x86_64 4:5.16.3-299.el7_9 will be installed
---> Package vim-common.x86_64 2:7.4.629-8.el7_9 will be installed
--> Processing Dependency: vim-filesystem for package: 2:vim-common-7.4.629-8.el7_9.x86_64
---> Package which.x86_64 0:2.20-7.el7 will be installed
--> Running transaction check
---> Package perl-Carp.noarch 0:1.26-244.el7 will be installed
---> Package perl-Exporter.noarch 0:5.68-3.el7 will be installed
---> Package perl-File-Path.noarch 0:2.09-2.el7 will be installed
---> Package perl-File-Temp.noarch 0:0.23.01-3.el7 will be installed
---> Package perl-Filter.x86_64 0:1.49-3.el7 will be installed
---> Package perl-Getopt-Long.noarch 0:2.40-3.el7 will be installed
--> Processing Dependency: perl(Pod::Usage) >= 1.14 for package: perl-Getopt-Long-2.40-3.el7.noarch
--> Processing Dependency: perl(Text::ParseWords) for package: perl-Getopt-Long-2.40-3.el7.noarch
---> Package perl-PathTools.x86_64 0:3.40-5.el7 will be installed
---> Package perl-Pod-Simple.noarch 1:3.28-4.el7 will be installed
--> Processing Dependency: perl(Pod::Escapes) >= 1.04 for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
--> Processing Dependency: perl(Encode) for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
---> Package perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 will be installed
---> Package perl-Socket.x86_64 0:2.010-5.el7 will be installed
---> Package perl-Storable.x86_64 0:2.45-3.el7 will be installed
---> Package perl-Time-HiRes.x86_64 4:1.9725-3.el7 will be installed
---> Package perl-Time-Local.noarch 0:1.2300-2.el7 will be installed
---> Package perl-constant.noarch 0:1.27-2.el7 will be installed
---> Package perl-macros.x86_64 4:5.16.3-299.el7_9 will be installed
---> Package perl-threads.x86_64 0:1.87-4.el7 will be installed
---> Package perl-threads-shared.x86_64 0:1.43-6.el7 will be installed
---> Package vim-filesystem.x86_64 2:7.4.629-8.el7_9 will be installed
--> Running transaction check
---> Package perl-Encode.x86_64 0:2.51-7.el7 will be installed
---> Package perl-Pod-Escapes.noarch 1:1.04-299.el7_9 will be installed
---> Package perl-Pod-Usage.noarch 0:1.63-3.el7 will be installed
--> Processing Dependency: perl(Pod::Text) >= 3.15 for package: perl-Pod-Usage-1.63-3.el7.noarch
--> Processing Dependency: perl-Pod-Perldoc for package: perl-Pod-Usage-1.63-3.el7.noarch
---> Package perl-Text-ParseWords.noarch 0:3.29-4.el7 will be installed
--> Running transaction check
---> Package perl-Pod-Perldoc.noarch 0:3.20-4.el7 will be installed
--> Processing Dependency: perl(parent) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: perl(HTTP::Tiny) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: groff-base for package: perl-Pod-Perldoc-3.20-4.el7.noarch
---> Package perl-podlators.noarch 0:2.5.1-3.el7 will be installed
--> Running transaction check
---> Package groff-base.x86_64 0:1.22.2-8.el7 will be installed
---> Package perl-HTTP-Tiny.noarch 0:0.033-3.el7 will be installed
---> Package perl-parent.noarch 1:0.225-244.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved================================================================================Package Arch Version Repository Size
================================================================================
Installing:vim-enhanced x86_64 2:7.4.629-8.el7_9 updates 1.1 M
Installing for dependencies:gpm-libs x86_64 1.20.7-6.el7 base 32 kgroff-base x86_64 1.22.2-8.el7 base 942 kperl x86_64 4:5.16.3-299.el7_9 updates 8.0 Mperl-Carp noarch 1.26-244.el7 base 19 kperl-Encode x86_64 2.51-7.el7 base 1.5 Mperl-Exporter noarch 5.68-3.el7 base 28 kperl-File-Path noarch 2.09-2.el7 base 26 kperl-File-Temp noarch 0.23.01-3.el7 base 56 kperl-Filter x86_64 1.49-3.el7 base 76 kperl-Getopt-Long noarch 2.40-3.el7 base 56 kperl-HTTP-Tiny noarch 0.033-3.el7 base 38 kperl-PathTools x86_64 3.40-5.el7 base 82 kperl-Pod-Escapes noarch 1:1.04-299.el7_9 updates 52 kperl-Pod-Perldoc noarch 3.20-4.el7 base 87 kperl-Pod-Simple noarch 1:3.28-4.el7 base 216 kperl-Pod-Usage noarch 1.63-3.el7 base 27 kperl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 kperl-Socket x86_64 2.010-5.el7 base 49 kperl-Storable x86_64 2.45-3.el7 base 77 kperl-Text-ParseWords noarch 3.29-4.el7 base 14 kperl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 kperl-Time-Local noarch 1.2300-2.el7 base 24 kperl-constant noarch 1.27-2.el7 base 19 kperl-libs x86_64 4:5.16.3-299.el7_9 updates 690 kperl-macros x86_64 4:5.16.3-299.el7_9 updates 44 kperl-parent noarch 1:0.225-244.el7 base 12 kperl-podlators noarch 2.5.1-3.el7 base 112 kperl-threads x86_64 1.87-4.el7 base 49 kperl-threads-shared x86_64 1.43-6.el7 base 39 kvim-common x86_64 2:7.4.629-8.el7_9 updates 5.9 Mvim-filesystem x86_64 2:7.4.629-8.el7_9 updates 11 kwhich x86_64 2.20-7.el7 base 41 kTransaction Summary
================================================================================
Install 1 Package (+32 Dependent packages)Total download size: 19 M
Installed size: 63 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/perl-Carp-1.26-244.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for perl-Carp-1.26-244.el7.noarch.rpm is not installed
Public key for perl-Pod-Escapes-1.04-299.el7_9.noarch.rpm is not installed
--------------------------------------------------------------------------------
Total 9.5 MB/s | 19 MB 00:02
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5Package : centos-release-7-9.2009.0.el7.centos.x86_64 (@CentOS)From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : gpm-libs-1.20.7-6.el7.x86_64 1/33Installing : 2:vim-filesystem-7.4.629-8.el7_9.x86_64 2/33 Installing : 2:vim-common-7.4.629-8.el7_9.x86_64 3/33 Installing : which-2.20-7.el7.x86_64 4/33install-info: No such file or directory for /usr/share/info/which.info.gzInstalling : groff-base-1.22.2-8.el7.x86_64 5/33 Installing : 1:perl-parent-0.225-244.el7.noarch 6/33 Installing : perl-HTTP-Tiny-0.033-3.el7.noarch 7/33 Installing : perl-podlators-2.5.1-3.el7.noarch 8/33 Installing : perl-Pod-Perldoc-3.20-4.el7.noarch 9/33 Installing : 1:perl-Pod-Escapes-1.04-299.el7_9.noarch 10/33 Installing : perl-Encode-2.51-7.el7.x86_64 11/33 Installing : perl-Text-ParseWords-3.29-4.el7.noarch 12/33 Installing : perl-Pod-Usage-1.63-3.el7.noarch 13/33 Installing : 4:perl-macros-5.16.3-299.el7_9.x86_64 14/33 Installing : perl-Storable-2.45-3.el7.x86_64 15/33 Installing : perl-Exporter-5.68-3.el7.noarch 16/33 Installing : perl-constant-1.27-2.el7.noarch 17/33 Installing : perl-Socket-2.010-5.el7.x86_64 18/33 Installing : perl-Time-Local-1.2300-2.el7.noarch 19/33 Installing : perl-Carp-1.26-244.el7.noarch 20/33 Installing : perl-PathTools-3.40-5.el7.x86_64 21/33 Installing : perl-Scalar-List-Utils-1.27-248.el7.x86_64 22/33 Installing : 1:perl-Pod-Simple-3.28-4.el7.noarch 23/33 Installing : perl-File-Temp-0.23.01-3.el7.noarch 24/33 Installing : perl-File-Path-2.09-2.el7.noarch 25/33 Installing : perl-threads-shared-1.43-6.el7.x86_64 26/33 Installing : perl-threads-1.87-4.el7.x86_64 27/33 Installing : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 28/33 Installing : perl-Filter-1.49-3.el7.x86_64 29/33 Installing : 4:perl-libs-5.16.3-299.el7_9.x86_64 30/33Installing : perl-Getopt-Long-2.40-3.el7.noarch 31/33 Installing : 4:perl-5.16.3-299.el7_9.x86_64 32/33 Installing : 2:vim-enhanced-7.4.629-8.el7_9.x86_64 33/33 Verifying : perl-HTTP-Tiny-0.033-3.el7.noarch 1/33 Verifying : perl-threads-shared-1.43-6.el7.x86_64 2/33 Verifying : perl-Storable-2.45-3.el7.x86_64 3/33 Verifying : groff-base-1.22.2-8.el7.x86_64 4/33 Verifying : perl-Exporter-5.68-3.el7.noarch 5/33 Verifying : perl-constant-1.27-2.el7.noarch 6/33 Verifying : perl-PathTools-3.40-5.el7.x86_64 7/33 Verifying : 4:perl-macros-5.16.3-299.el7_9.x86_64 8/33 Verifying : 2:vim-enhanced-7.4.629-8.el7_9.x86_64 9/33 Verifying : 1:perl-parent-0.225-244.el7.noarch 10/33 Verifying : perl-Socket-2.010-5.el7.x86_64 11/33 Verifying : which-2.20-7.el7.x86_64 12/33 Verifying : 2:vim-filesystem-7.4.629-8.el7_9.x86_64 13/33 Verifying : perl-File-Temp-0.23.01-3.el7.noarch 14/33 Verifying : 1:perl-Pod-Simple-3.28-4.el7.noarch 15/33 Verifying : perl-Time-Local-1.2300-2.el7.noarch 16/33 Verifying : 1:perl-Pod-Escapes-1.04-299.el7_9.noarch 17/33 Verifying : perl-Carp-1.26-244.el7.noarch 18/33 Verifying : 2:vim-common-7.4.629-8.el7_9.x86_64 19/33 Verifying : perl-Scalar-List-Utils-1.27-248.el7.x86_64 20/33 Verifying : perl-Pod-Usage-1.63-3.el7.noarch 21/33 Verifying : perl-Encode-2.51-7.el7.x86_64 22/33 Verifying : perl-Pod-Perldoc-3.20-4.el7.noarch 23/33 Verifying : perl-podlators-2.5.1-3.el7.noarch 24/33 Verifying : 4:perl-5.16.3-299.el7_9.x86_64 25/33 Verifying : perl-File-Path-2.09-2.el7.noarch 26/33 Verifying : perl-threads-1.87-4.el7.x86_64 27/33 Verifying : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 28/33 Verifying : gpm-libs-1.20.7-6.el7.x86_64 29/33 Verifying : perl-Filter-1.49-3.el7.x86_64 30/33 Verifying : perl-Getopt-Long-2.40-3.el7.noarch 31/33 Verifying : perl-Text-ParseWords-3.29-4.el7.noarch 32/33 Verifying : 4:perl-libs-5.16.3-299.el7_9.x86_64 33/33 Installed:vim-enhanced.x86_64 2:7.4.629-8.el7_9 Dependency Installed:gpm-libs.x86_64 0:1.20.7-6.el7 groff-base.x86_64 0:1.22.2-8.el7 perl.x86_64 4:5.16.3-299.el7_9 perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-3.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-299.el7_9 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-5.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-299.el7_9 perl-macros.x86_64 4:5.16.3-299.el7_9 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 vim-common.x86_64 2:7.4.629-8.el7_9 vim-filesystem.x86_64 2:7.4.629-8.el7_9 which.x86_64 0:2.20-7.el7 Complete!
Removing intermediate container b83f42ac8d51---> 5316756f1b5e
Step 6/10 : RUN yum -y install net-tools---> Running in 9064f7db9162
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 0:2.0-0.25.20131004git.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved================================================================================Package Arch Version Repository Size
================================================================================
Installing:net-tools x86_64 2.0-0.25.20131004git.el7 base 306 kTransaction Summary
================================================================================
Install 1 PackageTotal download size: 306 k
Installed size: 917 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1Verifying : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1 Installed:net-tools.x86_64 0:2.0-0.25.20131004git.el7 Complete!
Removing intermediate container 9064f7db9162---> 563bf211d346
Step 7/10 : EXPOSE 80---> Running in 0af42b75890c
Removing intermediate container 0af42b75890c---> 669f9d6d4596
Step 8/10 : CMD echo $MYPATH---> Running in 23e8185ca95c
Removing intermediate container 23e8185ca95c---> 4238b045f568
Step 9/10 : CMD echo "----end----"---> Running in 4057a4bec344
Removing intermediate container 4057a4bec344---> a9be56ade9f7
Step 10/10 : CMD /bin/bash---> Running in b0381ec55d01
Removing intermediate container b0381ec55d01---> 13db9c2c8947
Successfully built 13db9c2c8947
Successfully tagged mycentos:0.1# 测试运行
[root@VM-0-10-centos dockerfile]# docker run -it mycentos:0.1# 进来直接是之前设定好的工作目录/usr/local
[root@c2f564a56533 local]# pwd
/usr/local# ifconfig能用了
[root@c2f564a56533 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.17.0.5 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:ac:11:00:05 txqueuelen 0 (Ethernet)RX packets 12 bytes 936 (936.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1000 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0# vim也能用了
[root@c2f564a56533 local]# vim test
构建自己的Tomcat
- 准备镜像文件tomcat压缩包,jdk压缩包
[root@VM-0-10-centos home]# ll
total 157536
-rw-r--r-- 1 root root 11597709 Oct 24 20:19 apache-tomcat-9.0.68.tar.gz
drwxr-xr-x 6 unbound root 4096 Oct 22 20:42 data
drwxr-xr-x 2 root root 4096 Oct 23 23:01 dockerfile
drwxr-xr-x 2 root root 4096 Oct 23 15:56 docker-test-volume
-rw-r--r-- 1 root root 149697219 Oct 24 20:29 jdk-8u351-linux-x64.tar.gz
drwxr-xr-x 3 root root 4096 Oct 22 19:42 mysql
- 编写dockerfile文件,官方命名
Dockerfile
,build会自动寻找这个文件,就不需要-f
指定了
[root@VM-0-10-centos tomcat]# vim Dockerfile
[root@VM-0-10-centos tomcat]# cat Dockerfile
FROM centos:7MAINTAINER sanbai<763417647@qq.com>ADD jdk-8u351-linux-x64.tar.gz /usr/local/ADD apache-tomcat-9.0.68.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/localWORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_351ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-9.0.68ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.68ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-9.0.68/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.68/bin/logs/catalina.out
- 构建镜像
# 下面是完整命令,但是由于文件名是Dockerfile,所以不需要 -f Dockerfile
# docker build -f Dockerfile -t diytomcat .
[root@VM-0-10-centos tomcat]# docker build -t diytomcat .
Sending build context to Docker daemon 161.3MB
Step 1/14 : FROM centos:7
......
Successfully built c80000b9b2d3
Successfully tagged diytomcat:latest# 查看一下镜像列表,自己的镜像构建成功了
[root@VM-0-10-centos tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
diytomcat latest c80000b9b2d3 4 minutes ago 834MB
mycentos 0.1 13db9c2c8947 23 hours ago 625MB
<none> <none> e2287f1dc69e 23 hours ago 231MB
sunbai/centos 1.0 5571c282f543 30 hours ago 231MB
nginx latest 605c77e624dd 9 months ago 141MB
mysql 5.7 c20987f18b13 10 months ago 448MB
centos 7 eeb6ee3f44bd 13 months ago 204MB
centos latest 5d0da3dc9764 13 months ago 231MB
- 启动镜像
# 启动时将日志文件和webapps下的test文件夹挂载到主机中
# 下面这行脚本可能使得容器内的tomcat启动失败,tomcat启动日志出现 failed - unable to allocate file descriptor table - out of memorylibrary initialization 错误
# docker run -d -p 8080:8080 --name sunbai -v /home/sunbai/build/tomcat/test:/usr/local/apache-tomcat-9.0.68/webapps/test -v /home/sunbai/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.68/logs diytomcat
# bf93867bc633c77c347419471b04a908805400268c86eb5ee703b198cf20b2c6# 原因,容器内nofile数值设置过大
# 解决方案,修改docker run启动参数 --ulimit nofile=1024:1024 以限制启动参数
[root@VM-0-10-centos tomcatlogs]# docker run -d --ulimit nofile=1024:1024 -p 8080:8080 --name sunbai -v /home/sunbai/build/tomcat/test:/usr/local/apache-tomcat-9.0.68/webapps/test -v /home/sunbai/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.68/logs diytomcat
4f7fbd29e45c383b5214b9311b490e2b2e526ece3e5a3729aa5db1d2dffae5d9# 查看当前启动的容器,容器运行中
[root@VM-0-10-centos tomcat]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf93867bc633 diytomcat "/bin/sh -c '/usr/lo…" 52 seconds ago Up 50 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp sunbai
e50ac9d277f8 sunbai/centos:1.0 "/bin/sh -c /bin/bash" 28 hours ago Up 28 hours docker01
bb042de99b86 nginx "/docker-entrypoint.…" 32 hours ago Up 32 hours 0.0.0.0:49154->80/tcp, :::49154->80/tcp nginx02
3d0332f678c3 nginx "/docker-entrypoint.…" 32 hours ago Up 32 hours 0.0.0.0:49153->80/tcp, :::49153->80/tcp nginx01# 到/home/sunbai/build/tomcat目录下查看,生成了test文件夹和tomcatlogs日志文件
[root@VM-0-10-centos tomcat]# cd /home/sunbai/build/tomcat
[root@VM-0-10-centos tomcat]# ls
test tomcatlogs
- 进入容器查看
[root@VM-0-10-centos tomcat]# docker exec -it bf93867bc633 /bin/bash
[root@bf93867bc633 local]# ls
apache-tomcat-9.0.68 bin etc games include jdk1.8.0_351 lib lib64 libexec sbin share src
[root@bf93867bc633 local]# pwd
/usr/local
[root@bf93867bc633 local]# cd apache-tomcat-9.0.68/
[root@bf93867bc633 apache-tomcat-9.0.68]# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs webapps
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib temp work
- 到/home/sunbai/build/tomcat/tomcatlogs/文件夹下查看下启动日志
[root@VM-0-10-centos tomcat]# cd /home/sunbai/build/tomcat/tomcatlogs/
[root@VM-0-10-centos tomcatlogs]# ls
catalina.2022-10-24.log host-manager.2022-10-24.log localhost_access_log.2022-10-24.txt
catalina.out localhost.2022-10-24.log manager.2022-10-24.log
[root@VM-0-10-centos tomcatlogs]# cat catalina.out
24-Oct-2022 15:08:23.161 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.68
......
24-Oct-2022 15:08:24.997 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
24-Oct-2022 15:08:25.018 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [1028] milliseconds
- 访问下这个Tomcat,成功了
- 往/home/sunbai/build/tomcat/test添加HTML文件
[root@VM-0-10-centos ~]# cd /home/sunbai/build/tomcat/test/
[root@VM-0-10-centos test]# ls
[root@VM-0-10-centos test]# vim index.html
[root@VM-0-10-centos test]# cat index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body><h1>我的第一个标题</h1><p>我的第一个段落。</p></body>
</html>
- 访问一下这个页面,成功
Redis集群部署实战
- 创建redis网卡
[root@VM-0-10-centos ~]# docker network create redis --subnet 172.38.0.0/16
fee2378bf266a29c9745d53cc165cca8f285b37a9175c4b661ebfcafa8bb96ca
[root@VM-0-10-centos ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
72b5fd5f989d bridge bridge local
ea4002e14ec1 host host local
46cac985389d mynet bridge local
221aaac7ba29 none null local
fee2378bf266 redis bridge local
- 通过脚本创建六个redis配置
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
- 启动redis
# 第一个redis
[root@VM-0-10-centos ~]# docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
Unable to find image 'redis:5.0.9-alpine3.11' locally
5.0.9-alpine3.11: Pulling from library/redis
cbdbe7a5bc2a: Pull complete
dc0373118a0d: Pull complete
cfd369fe6256: Pull complete
3e45770272d9: Pull complete
558de8ea3153: Pull complete
a2c652551612: Pull complete
Digest: sha256:83a3af36d5e57f2901b4783c313720e5fa3ecf0424ba86ad9775e06a9a5e35d0
Status: Downloaded newer image for redis:5.0.9-alpine3.11
fb849a84983b2d8fbd55ea5276fbab26d47495b1ed3128b12644a72e65a3d353# 第二个redis
docker run -p 6372:6379 -p 16372:16379 --name redis-2 \
-v /mydata/redis/node-2/data:/data \
-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf# 第三个redis
docker run -p 6373:6379 -p 16373:16379 --name redis-3 \
-v /mydata/redis/node-3/data:/data \
-v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf# 第四个redis
docker run -p 6374:6379 -p 16374:16379 --name redis-4 \
-v /mydata/redis/node-4/data:/data \
-v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf# 第五个redis
docker run -p 6375:6379 -p 16375:16379 --name redis-5 \
-v /mydata/redis/node-5/data:/data \
-v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf# 第六个redis
docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf# 查看一下docker容器列表
[root@VM-0-10-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c46ce8b66719 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 0.0.0.0:6376->6379/tcp, :::6376->6379/tcp, 0.0.0.0:16376->16379/tcp, :::16376->16379/tcp redis-6
690559f81f51 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 16 seconds ago Up 16 seconds 0.0.0.0:6375->6379/tcp, :::6375->6379/tcp, 0.0.0.0:16375->16379/tcp, :::16375->16379/tcp redis-5
a166b898a334 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 28 seconds ago Up 28 seconds 0.0.0.0:6374->6379/tcp, :::6374->6379/tcp, 0.0.0.0:16374->16379/tcp, :::16374->16379/tcp redis-4
bf6fa2c54294 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 56 seconds ago Up 56 seconds 0.0.0.0:6373->6379/tcp, :::6373->6379/tcp, 0.0.0.0:16373->16379/tcp, :::16373->16379/tcp redis-3
220c8d73225c redis:5.0.9-alpine3.11 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:6372->6379/tcp, :::6372->6379/tcp, 0.0.0.0:16372->16379/tcp, :::16372->16379/tcp redis-2
7d7306f91007 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:6371->6379/tcp, :::6371->6379/tcp, 0.0.0.0:16371->16379/tcp, :::16371->16379/tcp redis-1
- 配置Redis集群信息
# 进入redis-1,查看基本信息
[root@VM-0-10-centos ~]# docker exec -it redis-1 /bin/sh
/data # ls
appendonly.aof nodes.conf
/data # cat appendonly.aof
/data # cat nodes.conf
75614021665e6c789a7201373d905c83ee9a239a :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0# 配置集群信息
/data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 1
72.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 7 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
Adding replica 172.38.0.15:6379 to 172.38.0.13:6379
Adding extra replicas...
Adding replica 172.38.0.14:6379 to 172.38.0.11:6379
M: 75614021665e6c789a7201373d905c83ee9a239a 172.38.0.11:6379slots:[0-5460] (5461 slots) master
M: 004c4f22bc689e926bfa0a3588c94f05c85df3d5 172.38.0.12:6379slots:[5461-10922] (5462 slots) master
M: 4da2d19c9fb700a3cd9c73d1b571e3db27452e97 172.38.0.13:6379slots:[10923-16383] (5461 slots) master
S: a9d523fef348f24534cb17f9545c08b02528631c 172.38.0.14:6379replicates 75614021665e6c789a7201373d905c83ee9a239a
S: 25887c8d297a1df4608d6ded95ebc5a8f7a2f335 172.38.0.15:6379replicates 75614021665e6c789a7201373d905c83ee9a239a
S: 25887c8d297a1df4608d6ded95ebc5a8f7a2f335 172.38.0.15:6379replicates 4da2d19c9fb700a3cd9c73d1b571e3db27452e97
S: 5ec9426040b95800d36c3788ea904bad909030d6 172.38.0.16:6379replicates 004c4f22bc689e926bfa0a3588c94f05c85df3d5
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
...
>>> Performing Cluster Check (using node 172.38.0.11:6379)
M: 75614021665e6c789a7201373d905c83ee9a239a 172.38.0.11:6379slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 25887c8d297a1df4608d6ded95ebc5a8f7a2f335 172.38.0.15:6379slots: (0 slots) slavereplicates 4da2d19c9fb700a3cd9c73d1b571e3db27452e97
M: 004c4f22bc689e926bfa0a3588c94f05c85df3d5 172.38.0.12:6379slots:[5461-10922] (5462 slots) master1 additional replica(s)
M: 4da2d19c9fb700a3cd9c73d1b571e3db27452e97 172.38.0.13:6379slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: a9d523fef348f24534cb17f9545c08b02528631c 172.38.0.14:6379slots: (0 slots) slavereplicates 75614021665e6c789a7201373d905c83ee9a239a
S: 5ec9426040b95800d36c3788ea904bad909030d6 172.38.0.16:6379slots: (0 slots) slavereplicates 004c4f22bc689e926bfa0a3588c94f05c85df3d5
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
- 测试一下
/data # redis-cli -c
127.0.0.1:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:7
cluster_my_epoch:1
cluster_stats_messages_ping_sent:383
cluster_stats_messages_pong_sent:367
cluster_stats_messages_sent:750
cluster_stats_messages_ping_received:362
cluster_stats_messages_pong_received:383
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:750
127.0.0.1:6379> cluster nodes
25887c8d297a1df4608d6ded95ebc5a8f7a2f335 172.38.0.15:6379@16379 slave 4da2d19c9fb700a3cd9c73d1b571e3db27452e97 0 1667131849589 5 connected
75614021665e6c789a7201373d905c83ee9a239a 172.38.0.11:6379@16379 myself,master - 0 1667131850000 1 connected 0-5460
004c4f22bc689e926bfa0a3588c94f05c85df3d5 172.38.0.12:6379@16379 master - 0 1667131850089 2 connected 5461-10922
4da2d19c9fb700a3cd9c73d1b571e3db27452e97 172.38.0.13:6379@16379 master - 0 1667131849088 3 connected 10923-16383
a9d523fef348f24534cb17f9545c08b02528631c 172.38.0.14:6379@16379 slave 75614021665e6c789a7201373d905c83ee9a239a 0 1667131849000 4 connected
5ec9426040b95800d36c3788ea904bad909030d6 172.38.0.16:6379@16379 slave 004c4f22bc689e926bfa0a3588c94f05c85df3d5 0 1667131850590 7 connected
127.0.0.1:6379> set a b
-> Redirected to slot [15495] located at 172.38.0.13:6379 # 这里是redis-3在处理
OK
- 新开一个端口停掉redis-3
[root@VM-0-10-centos ~]# docker stop redis-3
redis-3
[root@VM-0-10-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c46ce8b66719 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 23 minutes ago Up 23 minutes 0.0.0.0:6376->6379/tcp, :::6376->6379/tcp, 0.0.0.0:16376->16379/tcp, :::16376->16379/tcp redis-6
690559f81f51 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 23 minutes ago Up 23 minutes 0.0.0.0:6375->6379/tcp, :::6375->6379/tcp, 0.0.0.0:16375->16379/tcp, :::16375->16379/tcp redis-5
a166b898a334 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 23 minutes ago Up 23 minutes 0.0.0.0:6374->6379/tcp, :::6374->6379/tcp, 0.0.0.0:16374->16379/tcp, :::16374->16379/tcp redis-4
220c8d73225c redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 24 minutes ago Up 24 minutes 0.0.0.0:6372->6379/tcp, :::6372->6379/tcp, 0.0.0.0:16372->16379/tcp, :::16372->16379/tcp redis-2
7d7306f91007 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 24 minutes ago Up 24 minutes 0.0.0.0:6371->6379/tcp, :::6371->6379/tcp, 0.0.0.0:16371->16379/tcp, :::16371->16379/tcp redis-1
- 尝试获取a
# 获取a,超时了,因为3挂掉了
172.38.0.13:6379> get a
Error: Operation timed out
# 重连集群
/data # redis-cli -c
# 获取a,成功了,由redis-5获取的,redis-5就是redis-3的从机
127.0.0.1:6379> get a
-> Redirected to slot [15495] located at 172.38.0.15:6379
"b"
# 查看一下集群信息,redis-3挂了,redis-5顶上了
172.38.0.15:6379> cluster nodes
4da2d19c9fb700a3cd9c73d1b571e3db27452e97 172.38.0.13:6379@16379 master,fail - 1667132142577 1667132141673 3 connected
25887c8d297a1df4608d6ded95ebc5a8f7a2f335 172.38.0.15:6379@16379 myself,master - 0 1667132320000 8 connected 10923-16383
004c4f22bc689e926bfa0a3588c94f05c85df3d5 172.38.0.12:6379@16379 master - 0 1667132321526 2 connected 5461-10922
5ec9426040b95800d36c3788ea904bad909030d6 172.38.0.16:6379@16379 slave 004c4f22bc689e926bfa0a3588c94f05c85df3d5 0 1667132322529 7 connected
a9d523fef348f24534cb17f9545c08b02528631c 172.38.0.14:6379@16379 slave 75614021665e6c789a7201373d905c83ee9a239a 0 1667132322529 4 connected
75614021665e6c789a7201373d905c83ee9a239a 172.38.0.11:6379@16379 master - 0 1667132321025 1 connected 0-5460
SpringBoot微服务打包Dokcer镜像
- 构建SpringBoot项目
这里直接使用若依框架的system模块 - 编写dockerfile
FROM java:8COPY *.jar /app.jarCMD ["--server.port=9201"]EXPOSE 9201ENTRYPOINT ["java", "-jar", "/app.jar"]
- 打包应用
[root@VM-0-10-centos ruoyi-modules-system]# ls
Dockerfile ruoyi-modules-system.jar
- 构建镜像
# docker build命令创建镜像
[root@VM-0-10-centos ruoyi-modules-system]# docker build -t sunbai .
Sending build context to Docker daemon 113.1MB
Step 1/5 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8---> d23bdf5b1b1b
Step 2/5 : COPY *.jar /app.jar---> 5518a06d5b4a
Step 3/5 : CMD ["--server.port=9201"]---> Running in a6898766a8a7
Removing intermediate container a6898766a8a7---> ab53a5f07757
Step 4/5 : EXPOSE 9201---> Running in 6778917af320
Removing intermediate container 6778917af320---> dfaa63f3c09d
Step 5/5 : ENTRYPOINT ["java", "-jar", "/app.jar"]---> Running in 6798bf8381a7
Removing intermediate container 6798bf8381a7---> 935588e0522f
Successfully built 935588e0522f
Successfully tagged sunbai:latest# 查看镜像列表
[root@VM-0-10-centos ruoyi-modules-system]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sunbai latest 935588e0522f 2 minutes ago 756MB
tomcat latest fb5657adc892 10 months ago 680MB
tomcat 7.0 9dfd74e6bc2f 16 months ago 533MB
redis 5.0.9-alpine3.11 3661c84ee9d0 2 years ago 29.8MB
java 8 d23bdf5b1b1b 5 years ago 643MB
- 发布运行
# 下面的运行方式容易引发OOM
# docker run -d -p 9201:9201 --name ruoyi-modules-system sunbai# 限制一下内存
docker run -d --ulimit nofile=1024:1024 -p 9201:9201 --name ruoyi-modules-system sunbai
- 登录一下系统,登录成功
Docker实战笔记相关推荐
- Docker 实战笔记
Docker的安装与配置 CentOS 前提条件 目前,CentOS 仅在发行的版本中的内核支持Docker Docker 运行在CentOS 7 上要求系统为64位,系统内核版本在3.10以上.本次 ...
- 尚硅谷Docker实战教程-笔记02【安装docker、镜像加速器配置】
尚硅谷大数据技术-教程-学习路线-笔记汇总表[课程资料下载] 视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01[理念简介 ...
- 阿里巴巴中台战略思想与架构实战笔记
阿里巴巴中台战略思想与架构实战笔记 序言一 序言二 第一部分 引子 第1章 阿⾥巴巴集团中台战略引发的思考 1.1 阿⾥巴巴共享业务事业部的发展史 1.2 企业信息中心发展的症结 "烟囱式& ...
- 狂神 Docker学习笔记 从基础到进阶 一步到位
Docker 学习笔记 感谢狂神的分享.附上B站视频链接. https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=92256 ...
- Docker学习笔记 (4)
Docker学习笔记 (4) Docker 网络 原理简述 ip addr查看网络地址: 问题:Docker 如何处理容器网络访问的? docker run -d -P --name tomcat01 ...
- 随笔——Docker学习笔记
Docker学习笔记 一.Docker 安装 二.Docker常用命令 注意事项 1.删除容器 2.删除镜像 3.容器中命令 4.容器的生命周期 5.Dockerfile构建镜像 6.docker两个 ...
- Docker学习笔记-快速上手笔记(保姆级)
文章目录 Docker简介 Docker安装 阿里云加速服务 运行流程图(run) Docker常用命令 基础命令 镜像命令 docker images docker search docker pu ...
- Docker基础03--Dockerfile详解与镜像发布--(狂神说docker学习笔记)
文章目录 1. Dockerfile介绍 2. Dockerfile指令说明 3. 制作Centos镜像 3.1 编写Dockerfile的文件 3.2 通过这个文件构建镜像(注意最后加个点!!!) ...
- RabbitMQ实战笔记
RabbitMQ实战笔记 1 MQ引言 1.1 中间件技术及架构的概述 1.2 什么是MQ 1.3 为什么要用MQ 1.4 MQ的分类 1.5 MQ的选择 2 RabbitMQ 的引言 2.1 Rab ...
最新文章
- 探究:如何判断Delphi中的对象指针是否可用
- matlab中隐含层缺省函数,Matlab双隐层的BP神经网络该如何创建
- 记一次悲惨的 Excel 导出事件
- 6套制造业大数据解决方案免费送,内含详细步骤手把手教会你
- OpenGL multiple lights多光源的实例
- 记录工作中常用的CSS3
- Android Studio Gradle输出信息乱码
- docker私有仓库Harbor 使用文档
- 各种编程语言,Linux命令行播放,Bio-Linux,Markdown编辑器等
- eclipse没有advanced按钮_Eclipse快捷键 + 自动提示不显示问题
- SAP License:今天你‘牺牲’了吗?
- python爬虫基础17-抓包工具使用
- A* search算法解迷宫
- 互联网晚报 | 06月03日 星期五 | 步步高回应“即将倒闭”传闻、爱彼迎启动房东/房源迁移计划;抖音宣布与中超联赛达成合作...
- 漫画C语言 做个聊天软件你不懂也得懂
- Win11如何获得最佳电源效率?
- 亭子早期博客中16进制颜色值地址
- 方舟生存进化手游版服务器维护,方舟生存进化手游PVX服务器规则一览 PVX服务器怎么玩_3DM手游...
- 图灵学院:淘宝大秒系统设计详解
- C库函数——fabs()