centos7 使用docker 笔记
在centos7上,使用docker;
docker指令从零开始,一步步演示,希望对大家有所帮助;
docker使用起来很方便,希望开发者多多使用docker,方便自己的开发;
-
安装
yum -y install docker-io # 安装docker依赖包,仅此一条命令就可以搞定;
-
启动Docker
service docker start # 启动docker
-
加入开机启动
chkconfig docker on # 加入开机启动
-
查看版本
docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Mon Jun 7 15:36:09 2021 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Mon Jun 7 15:36:09 2021 OS/Arch: linux/amd64 Experimental: false
-
镜像库
-
安装centos7.9 容器
# centos7.9.2009 安装 docker pull centos:centos7.9.2009 # 查看所有镜像 docker images # 控制台行进入,可以指令交互 --name 命名 docker run -t -i --name centos.1 docker.io/centos:centos7.9.2009 /bin/bash # 可以后台运行 -d docker run -t -i -d docker.io/centos:centos7.9.2009 /bin/bash # 查看镜像的运行状态 docker ps -a # 进入运行中的容器 容器ID docker exec -i -t 2f12d291d8f7 bash # 进入运行中的容器 容器名称 docker exec -i -t modest_visvesvaraya bash
-
用Dockerfile制作jdk镜像
mkdir docker.i ls Dockerfile jdk-8u311-linux-x64.tar.gz
# Dockerfile for jdk1.8 FROM docker.io/centos:centos7.9.2009 # install jdk.1.8 ADD jdk-8u311-linux-x64.tar.gz /home/app ENV JAVA_HOME=/home/app/jdk1.8.0_311 ENV PATH=$JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 制作镜像 -t是名称是标签 .是当前文件夹 docker build -t jdk-1.8:0.0.1 . # 运行镜像 docker run -itd --name jdk1.8 jdk-1.8:0.0.1 # 进入镜像 docker exec -i -t jdk1.8 bash # 查看java版本 java -version
-
用Dockerfile自己制作tomcat镜像
# 下载tomcat压缩包 wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.73/bin/apache-tomcat-8.5.73.tar.gz # 文件夹中的文件 ls apache-tomcat-8.5.73.tar.gz Dockerfile jdk-8u311-linux-x64.tar.gz
# Dockerfile for tomcat8 FROM docker.io/centos:7.9.2009 # install jdk.1.8 ADD jdk-8u311-linux-x64.tar.gz /home/app ENV JAVA_HOME=/home/app/jdk1.8.0_311 ENV PATH=$JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # install tomcat8 ADD apache-tomcat-8.5.73.tar.gz /home/app ENV CATALINA_HOME=/home/app/apache-tomcat-8.5.73 expose 8080 CMD ["/home/app/apache-tomcat-8.5.73/bin/catalina.sh","run"]
docker build -t tomcat-8:0.0.1 .
# 运行tomcat8镜像 8081和8082 # 实际使用时,需要考虑 包的部署 docker run -p 8081:8080 -d tomcat-8:0.0.1 docker run -p 8082:8080 -d tomcat-8:0.0.1
# 进入镜像, 镜像中关闭tomcat后,容器也会自动关闭 docker exec -it 58d6f5a1697b bash
# 浏览器访问宿主机的8081和8082 http://192.168.31.100:8081/ http://192.168.31.100:8081/
-
下载tomcat镜像使用tomcat
# 先使用这个 tomcat8 + jre8 docker pull tomcat:8-jre8
# 启动8080 ,放入数据卷目录下 /docker_v/tomcat8080/webapps # 命名为 tomcat8080 # --restart=always 重启容器后自动执行 # --privileged=true 给数据卷权限 # GOOD docker run -d --name tomcat8080 --restart=always -p 8080:8080 --privileged=true -v /docker_v/tomcat8080/webapps:/usr/local/tomcat/webapps docker.io/tomcat:8-jre8
-
mysql容器 Good
## 拉取镜像 docker pull mysql:5.7
# GOOD 推荐使用这个 启动镜像 数据持久化到/home/docker/var/lib/mysql:/var/lib/mysql # mysql3306.sh docker run -d -p 3306:3306 --name mysql3306 --privileged=true -v /docker_v/mysql3306:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root docker.io/mysql:5.7
-
使用Dockerfile,制作mysql镜像
FROM docker.io/mysql:5.7 COPY bolg_test.sql /bolg_test.sql
docker run -d -p 33068:3306 --name mysql.8 -e MYSQL_ROOT_PASSWORD=root --privileged=true -v /home/software/mysql/data:/home/software/mysql/data mysql-5.7:0.0.1
# 导入sql文件 mysql -uroot -proot < /home/software/mysql/data/bolg_test.sql
# 关闭容器 docker stop dfac6f0ee366 docker stop mysql.7
-
使用docker部署war包 helloworld.war
[root@pipi tomcat]# ls apache-tomcat-8.5.73.tar.gz Dockerfile helloworld.war jdk-8u311-linux-x64.tar.gz
# vi Dockerfile FROM docker.io/centos:centos7.9.2009 # install jdk1.8 ADD jdk-8u311-linux-x64.tar.gz /home/app ENV JAVA_HOME=/home/app/jdk1.8.0_311 ENV PATH=$JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # install tomcat8 ADD apache-tomcat-8.5.73.tar.gz /home/app ENV CATALINA_HOME=/home/app/apache-tomcat-8.5.73 # deploy the war RUN rm -rf $CATALINA_HOME/webapps/* COPY helloworld.war $CATALINA_HOME/webapps/ROOT/ROOT.war WORKDIR $CATALINA_HOME/webapps/ROOT RUN jar xvf ROOT.war RUN rm -rf ROOT.war expose 8080 CMD ["/home/app/apache-tomcat-8.5.73/bin/catalina.sh","run"]
docker build -t helloworld:0.0.1 .
docker run -p 8081:8080 -d helloworld:0.0.1 # 加上 表示此容器开机启动,只要docker也设置了开机自启,docker不死 --restart=always
# 调用接口,成功返回 curl http://192.168.8.200:8081/hello HelloWorld
-
运行jar包
# jdk环境 + jar包即可 使用数据卷 java -jar 是指令 默认是8080端口 docker run -d --restart=always -p 9090:8080 --privileged=true -v /home/software:/home/software --name helloworld.jar2 jdk-test:0.0.1 java -jar /home/software/helloworld.jar
# 指定容器内运行的端口号 --server.port=9093 docker run -d --restart=always -p 9093:9093 --privileged=true -v /home/software:/home/software --name helloworld.jar93 jdk-test:0.0.1 java -jar /home/software/helloworld.jar --server.port=9093
# GOOD cat java-jar9099.sh #!/bin/bash # 需要先将jar包放入目录下,使用数据卷中的 /docker_v/java-jar9090 下的helloworld.jar # cmdName=java-jar cmdPort=9099 vmPort=8080 name=$cmdName$cmdPort jarName=helloworld.jar docker run -d --restart=always -p $cmdPort:$vmPort --privileged=true -v /docker_v/$name:/docker_v/$name --name $name jdk-test:0.0.1 java -jar /docker_v/$name/$jarName --server.port=8080
-
停止和重新启动容器
# 停止 --name docker stop helloworld.jar93 helloworld.jar92 helloworld.jar3 helloworld.jar2 # 启动 --name docker start helloworld.jar93 # Docker:关闭以--restart=always启动的容器,必须是ID docker update --restart=no <container-id> docker stop <container-id>
-
删除镜像和容器
# 删除镜像 docker rmi jdk1.8:0.0.1 # 删除容器(使用容器名称删除) docker rm jdk1.8
-
nginx容器使用
# 拉取镜像 docker pull nginx:latest
# 启动容器 docker run --name nginx80 -d -p 80:80 nginx # 容器中默认配置在 /etc/nginx/nginx.conf docker run --name nginx82 -d -p 82:80 -v /some/content/nginx82:/usr/share/nginx -d nginx
-
redis容器
$ docker pull redis #113MB $ docker pull redis:3.2 # 76MB # 每60秒持久化 $ docker run --name some-redis -d redis redis-server --save 60 1 --loglevel warning # GOOD $ docker run -d --name redis6379 --privileged=true -p 6379:6379 -v /docker_v/redis6379:/data redis redis-server --appendonly yes
-
activeMq容器
# 搜索 $ docker search activemq # 拉取 $ docker pull webcenter/activemq:latest
$ docker run -di --name=activemq -p 61616:61616 -p 8161:8161 webcenter/activemq
http://192.168.8.200:8161
8161 控制页面使用 61616 程序访问使用
end