安裝鏈接java
# 移除 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine #更新配置 yum install -y yum-utils yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 下載安裝 yum install docker-ce docker-ce-cli containerd.io # 開機啓動 systemctl enable docker # 開啓服務 systemctl start docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
-e 配置信息node
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.7.1
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer portainer/portainer
docker commit -a 'bzm' -m 'hello' nginx01 nginx-bzm:1.0 -a 做者 -m 信息 nginx01 鏡像 nginx-bzm:1.0 生成鏡像
docker run -d -p 80:8080 -v/usr/local/share/docker/test1:/usr/local/tomcat/webapps --name tomcat1 864a09c6fb61 -v/usr/local/share/docker/test1:/usr/local/tomcat/webapps linux文件系統位置:docker鏡像內文件位置
# 安裝mysql docker pull mysql:8.0.22 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag #啓動 docker run -p 3301:3306 -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/data:/var/lib/mysql --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.22 # 若是遠程訪問不上,進入容器,登陸mysql 執行命令 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
docker run -d -p 80:8080 -v/usr/local/tomcat/webapps --name tomcat1 864a09c6fb61 -v/usr/local/share/docker/test1:/usr/local/tomcat/webapps # 查看 [root@flink4 data]# docker volume ls DRIVER VOLUME NAME local 515ab29af539c97522fc8f17594dde05a4e1daea1caae263894f5d63cdcb4ebc [root@flink4 data]# docker volume inspect 515ab29af539c97522fc8f17594dde05a4e1daea1caae263894f5d63cdcb4ebc [ { "CreatedAt": "2020-11-30T01:49:23+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/515ab29af539c97522fc8f17594dde05a4e1daea1caae263894f5d63cdcb4ebc/_data", "Name": "515ab29af539c97522fc8f17594dde05a4e1daea1caae263894f5d63cdcb4ebc", "Options": null, "Scope": "local" } ]
如何區分掛載類型mysql
-v 容器內路徑 #匿名掛載 -v 券名:容器內路徑 #具名掛載 -v 容器外路徑:容器內路徑 #指定路徑掛載
# 讀寫權限 -v 容器外路徑:容器內路徑:ro #只讀 -v 容器外路徑:容器內路徑:rw #讀寫 ro 只能經過外部宿主機來改變 容器內部不能改變
建立dockerfilelinux
FROM centos VOLUME ["file1","file2"] CMD echo 'end' CMD /bin/bash # VOLUME ["file1","file2"] 不要使用單引號
構建nginx
-f 文件路徑web
-t 目標redis
. 生成在當前路徑spring
[root@flink4 docker_volume]# docker build -f ./dockerfile01 -t cgg/centos:1 . Sending build context to Docker daemon 2.048kB Step 1/4 : FROM centos ---> 0d120b6ccaa8 Step 2/4 : VOLUME ['FILE1','FILE2'] ---> Running in 60b40c83c18a Removing intermediate container 60b40c83c18a ---> 908dc138bb5d Step 3/4 : CMD echo 'end' ---> Running in c03127929218 Removing intermediate container c03127929218 ---> 097f7c89e329 Step 4/4 : CMD /bin/bash ---> Running in db7bf3824a16 Removing intermediate container db7bf3824a16 ---> 7fd7c4965005 Successfully built 7fd7c4965005 Successfully tagged cgg/centos:1
啓動起一個sql
docker run --name centos1 -d -it e132cdddc2f1 # 進入容器查看 lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin drwxr-xr-x. 5 root root 360 Nov 29 21:38 dev drwxr-xr-x. 1 root root 66 Nov 29 21:38 etc drwxr-xr-x. 2 root root 6 Nov 29 21:38 file1 drwxr-xr-x. 2 root root 6 Nov 29 21:38 file2 drwxr-xr-x. 2 root root 6 May 11 2019 home lrwxrwxrwx. 1 root root 7 May 11 2019 lib -> usr/lib lrwxrwxrwx. 1 root root 9 May 11 2019 lib64 -> usr/lib64 drwx------. 2 root root 6 Aug 9 21:40 lost+found drwxr-xr-x. 2 root root 6 May 11 2019 media drwxr-xr-x. 2 root root 6 May 11 2019 mnt drwxr-xr-x. 2 root root 6 May 11 2019 opt dr-xr-xr-x. 129 root root 0 Nov 29 21:38 proc dr-xr-x---. 2 root root 162 Aug 9 21:40 root drwxr-xr-x. 11 root root 163 Aug 9 21:40 run lrwxrwxrwx. 1 root root 8 May 11 2019 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 May 11 2019 srv dr-xr-xr-x. 13 root root 0 Nov 29 17:27 sys drwxrwxrwt. 7 root root 145 Aug 9 21:40 tmp drwxr-xr-x. 12 root root 144 Aug 9 21:40 usr drwxr-xr-x. 20 root root 262 Aug 9 21:40 var
啓動第二個docker
docker run -d --name centos2 --volumes-from centos1 e132cdddc2f1 [root@flink4 docker_volume]# docker exec -it 2bad957bda5f /bin/bash [root@2bad957bda5f /]# ls -l total 0 lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin drwxr-xr-x. 5 root root 360 Nov 29 21:49 dev drwxr-xr-x. 1 root root 66 Nov 29 21:48 etc drwxr-xr-x. 2 root root 6 Nov 29 21:38 file1 drwxr-xr-x. 2 root root 6 Nov 29 21:38 file2 drwxr-xr-x. 2 root root 6 May 11 2019 home lrwxrwxrwx. 1 root root 7 May 11 2019 lib -> usr/lib lrwxrwxrwx. 1 root root 9 May 11 2019 lib64 -> usr/lib64 drwx------. 2 root root 6 Aug 9 21:40 lost+found drwxr-xr-x. 2 root root 6 May 11 2019 media drwxr-xr-x. 2 root root 6 May 11 2019 mnt drwxr-xr-x. 2 root root 6 May 11 2019 opt dr-xr-xr-x. 134 root root 0 Nov 29 21:49 proc dr-xr-x---. 1 root root 27 Nov 29 21:48 root drwxr-xr-x. 11 root root 163 Aug 9 21:40 run lrwxrwxrwx. 1 root root 8 May 11 2019 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 May 11 2019 srv dr-xr-xr-x. 13 root root 0 Nov 29 17:27 sys drwxrwxrwt. 7 root root 145 Aug 9 21:40 tmp drwxr-xr-x. 12 root root 144 Aug 9 21:40 usr drwxr-xr-x. 20 root root 262 Aug 9 21:40 var
mysql的數據共享
FROM #指定基礎鏡像,必須爲`dockerfile`中的第一個命令 MAINTAINER #維護者信息 RUN #構建鏡像時執行的命令,一個文件中能夠包含多個`RUN`命令 ADD #將本地文件添加到容器中,tar類型文件會自動解壓(網絡壓縮資源不會被解壓),能夠訪問網絡資源,相似wget COPY #功能相似ADD,可是是不會自動解壓文件,也不能訪問網絡資源 ENV #設置環境變量 VOLUME #添加捲,用於指定持久化目錄 EXPOSE #指定暴露鏡像的端口供主機作映射 WORKDIR #指定工做目錄,相似於cd命令,以後的命令都是基於此工做目錄 CMD #構建容器後調用,也就是在容器啓動時才進行調用,存在多個CMD時只有最後一個生效,也支持exec語法。 ENTRYPOINT #配置容器,使其可執行化。配合CMD可省去"application",只使用參數。 `CMD的命令會被 docker run 的命令覆蓋而ENTRYPOINT不會` ONBUILD #用於設置鏡像觸發器
構建dockerfile
[root@dw1 dockerfiles]# vi dockerCentos.txt FROM centos MAINTAINER lcgg<18706423038@163.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools EXPOSE 80 CMD echo $MYPATH CMD /bin/bash
build dockerfile
docker build -f dockerCentos.txt -t centos:1.1 .
[root@dw1 files]# docker run -p 9090:8080 --name testlcg1 -v/home/file/tomcattest/:/usr/local/apache-tomcat-9.0.40/webapp/test -v /home/file/build/logs:/usr/local/apache-tomcat-9.0.40/logs -d 02ea75af327f
for port in $(seq 1 6); \ do \ mkdir -p /usr/local/app/redis/cluster/node-${port}/conf touch /usr/local/app/redis/cluster/node-${port}/conf/redis.conf cat << EOF >/usr/local/app/redis/cluster/node-${port}/conf/redis.conf port 6379 appendonly yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 15000 cluster-announce-ip 172.38.0.1${port} cluster-announce-port 6379 cluster-announce-bus-port 16379 EOF done
## 1 docker run -p 6371:6379 -p 16371:16379 --name redis-1 \ -v /usr/local/app/redis/cluster/node-1/data:/dara \ -v /usr/local/app/redis/cluster/node-1/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.11 redis redis-server /etc/redis/redis.conf ## 2 docker run -p 6372:6379 -p 16372:16379 --name redis-2 \ -v /usr/local/app/redis/cluster/node-2/data:/dara \ -v /usr/local/app/redis/cluster/node-2/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.12 redis redis-server /etc/redis/redis.conf ## 3 docker run -p 6373:6379 -p 16371:16379 --name redis-3 \ -v /usr/local/app/redis/cluster/node-3/data:/dara \ -v /usr/local/app/redis/cluster/node-3/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.13 redis redis-server /etc/redis/redis.conf ## 4 docker run -p 6374:6379 -p 16374:16379 --name redis-4 \ -v /usr/local/app/redis/cluster/node-4/data:/dara \ -v /usr/local/app/redis/cluster/node-4/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.14 redis redis-server /etc/redis/redis.conf ## 5 docker run -p 6375:6379 -p 16375:16379 --name redis-5 \ -v /usr/local/app/redis/cluster/node-5/data:/dara \ -v /usr/local/app/redis/cluster/node-5/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.15 redis redis-server /etc/redis/redis.conf ## 6 docker run -p 6376:6379 -p 16376:16379 --name redis-6 \ -v /usr/local/app/redis/cluster/node-6/data:/dara \ -v /usr/local/app/redis/cluster/node-6/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.16 redis redis-server /etc/redis/redis.conf
# 進入容器隨便一個 執行 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 172.38.0.16:6379 --cluster-replicas 1
FROM java:8 COPY ./*.jar /app.jar CMD ["--server.port=8080"] EXPOSE 8080 ENTRYPOINT ["java", "-jar","/app.jar"]
準備項目jar包
docker build -t lcgtest2 . docker run --name lcgtestsp -d -P lcgtest2
訪問便可