运行centos镜像并进入centos
docker run -it centos /bin/bash
退出快捷键
ctrl+p+q
进入容器centos(方法一)
docker exec -it 45f5ebe83a3b /bin/bash
进入容器centos(方法二)
docker attach 45f5ebe83a3b
拷贝容器内的数据到外面linux上
[root@renxh home]# docker cp 45f5ebe83a3b:/home/test1.java /home
[root@renxh home]# ls
redis renxh test1.java test.java www
下载nginx
docker pull nginx
启动nginx(将容器的80端口映射到服务器的3333端口,访问3333即可)
docker run -d --name nginx02 -p 3333:80 nginx
自测
curl localhost:3333
下载Tomcat
下载elasticsearch
[root@renxh home]# docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
查看状态
docker stats
下载portainer
[root@renxh home]# docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
访问
http://8.140.185.165:8088/#/init/admin
//-----------------------------第二天------------------------------------------
docker卷的技术,挂载目录(即虚拟机和docker容器共享一个目录)
将本地home下的ceshi目录和容器中的home目录相对应,在任意一个目录创建文件,另一个目录也会有同样的文件(类似vue的双向绑定)
[root@renxh ~]# docker run -it -v /home/ceshi:/home centos /bin/bash
[root@2e308f6d7664 /]# cd home
启动曾经启动过的容器
mysql在docker中的数据持久化问题
下载mysql
[root@renxh /]# docker pull mysql:5.7
启动并共用msql文件(linux和docker共用同一个文件)
[root@renxh mysql]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql02 mysql:5.7
具名和匿名挂载
匿名挂载:
[root@renxh home]# docker run -d -P --name nginx10 -v /etc/nginx nginx
[root@renxh home]# docker volume ls
具名挂载
[root@renxh home]# docker run -d -P --name nginx11 -v juming-nginx:/etc/nginx nginx
[root@renxh home]# docker volume ls
[root@renxh home]# docker volume inspect juming-nginx
dockfile的使用
[root@renxh docker-test-volume]# docker build -f dockerfile1 -t renxh/centos:1.0 .
共享数据
[root@renxh _data]# docker run -it --name docker02 renxh/centos:3.0
[root@renxh docker-test-volume]# docker run -it --name docker03 --volumes-from docker02 renxh/centos:3.0
编写自己的dockfile
FROM centos
MAINTAINER renxh<renxiaohu@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
通过命令进行构建镜像文件
mydockerfile :是自己上面设置的文件
mycentos:0.1:是自己利用上面的文件生成的镜像
[root@renxh dockerfile]# docker build -f mydockerfile -t mycentos:0.1 .
运行镜像文件
[root@renxh dockerfile]# docker run -it mycentos:0.1
查看镜像历史生成记录
[root@renxh dockerfile]# docker history 48df1a9795a4
自定义tomcat的镜像
FROM centos
MAINTAINER renxh<renxiaohu@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u291-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.46.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.2_91
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.46
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.46
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.46/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.46/logs/catalina.out
构建镜像
[root@renxh renxh]# docker build -t diytomcat2 .
启动
[root@renxh renxh]# docker run -d -p 8080:8080 --name renxhtomcat3 -v /home/renxh/test:/usr/local/apache-tomcat-9.0.46/webapps/test -v /home/renxh/tomcatlogs/:/usr/local/apache-tomcat-9.0.46/logs diytomcat2
进入容器
[root@renxh renxh]# docker exec -it c691dd83de29 /bin/bash
删除所有镜像
[root@renxh ~]# docker rmi -f $(docker images -aq)
删除所有容器
[root@renxh ~]# docker rm -f $(docker ps -aq)
自定义网络
[root@renxh ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
进入网络
[root@renxh ~]# docker network inspect mynet
两个容器可以ping通,不用依赖–link
[root@renxh ~]# docker run -d -P --name tomcat-net-01 --net mynet tomcat
97626509afcb2dbb3ef03c339b32d2a527ad3acf9865a84b7f4c05effb945f2b
[root@renxh ~]# docker run -d -P --name tomcat-net-02 --net mynet tomcat
f14fff3e11f0799ba5de24ad6b563ea358882c14edc993b1657417b895239140
[root@renxh ~]# docker exec -it tomcat-net-01 ping tomcat-net-02
PING tomcat-net-02 (192.168.0.3) 56(84) bytes of data.
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.092 ms
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.071 ms
^C
--- tomcat-net-02 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1ms
rtt min/avg/max/mdev = 0.071/0.081/0.092/0.013 ms
把其他容器加入到这个网关里,就可以ping通
[root@renxh ~]# docker network connect tomcat01 mynet
springboot微服务打包成docker镜像
1.编写Dockerfile
2.打包jar包并和Dockerfile一起上传
3.打包成镜像
[root@renxh idea]# docker build -t renxh666 .
4.启动镜像为容器
[root@renxh idea]# docker run -d -p 8080:8080 --name renxh-web renxh666
5.访问即可