Docker 学习 丨 Docker基础实战

159 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

Docker 安装 Nginx

docker pull niginx
docker run -d --name nginx01 -p 8080:80 nginx 
docker ps
# 容器内端口
# 宿主机端口

Docker 安装 Tomcat

用完即删

docker run -it --rm tomcat:9.0
docker pull tomcat
docker run -itd --name tomcat01 -p 8081:8080 tomcat
docer exec -it tomcat01 /bin/shell
mv webapps webapps_back
mv webapps.dist webapps
# 或者
cp -r webapps.dist/* webapps

Docker 安装 ES+Kibana

docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
​
# 启动了 linux 就卡住了
# 解决方案
docker stats # 查看 docker cpu 的状态
# es 十分耗内存
# 测试 ES 是否成功# 赶紧关闭, 增加内存的限制
docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
​
#kibana 连接 elasticsearch
​
​
{
  "name" : "eb7c63f9d70c",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "NtM-wNqUTY2D5oEQcgi_XA",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

可视化

portainer

Docker 图形化界面管理工具

docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
​
docker run -d -p 8088:9000 portainer/portainer

Rancher(CI/CD再用)

Docker 镜像原理

UnionFs 联合文件系统

如何提交自己的镜像? Commit 镜像

docker commit 提交容器成为一个新的镜像(副本)
​
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:tag

---------分割线: 入门完成---------

自己的小问题

容器启动成功后如何修改环境变量? -e 的

容器数据卷

将应用于运行环境打包成一个镜像!

需求: 数据可以存储在本地, 数据共享的技术

容器卷::目录的挂载

总结: 容器的持久化和同步操作

方式 1: 直接使用命令挂载 -v

# 测试
​
docker run -it -v 主机目录:容器内目录
​
docker run -id -v /Users/xujiantong/home/ceshi:/home centos /bin/bash
​
# 查看挂载信息
docker inspect <容器 id>
"Mounts": [
  {
  "Type": "bind",
  "Source": "/Users/xujiantong/home/ceshi",
  "Destination": "/home",
  "Mode": "",
  "RW": true,
  "Propagation": "rprivate"
  }
],

安装 mysql

docker run -d -p 3310:3306 -v /Users/xujiantong/home/mysql/conf:/etc/mysql/conf.d \
-v /Users/xujiantong/home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --privileged=true  mysql:5.7

具名挂载和匿名挂载

# 匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx nginx
​
docker volume --help
# 查看所有的容器卷的情况
docker volume ls# 匿名卷挂载
DRIVER    VOLUME NAME
local     2318a8b7cf4bb6d58e893688c30b8cd89efb97da6f7a82a199a7486ca3c22681
​
# 查看具体信息
docker volume inspect 2318a8b7cf4bb6d58e893688c30b8cd89efb97da6f7a82a199a7486ca3c22681
​
# 具名挂载
docker run -d -P nginx02 -v juming:/etc/nginx nginx
​
ro readonly
rw readwrite # 可读可写
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:rw nginx
​

\