从docker到k8s

136 阅读2分钟
# 外部执行容器里命令
docker exec nginx01 cat /usr/share/nginx/html/index.html

# 导出镜像到文件中
docker save -o nginx-alpine.tar nginx:alpine

# 从文件中加载镜像
docker load -i nginx-alpine.tar

# 容器跟随docker重启
--restart always

# 内存限制, 最大内存可用500M
--memory=500m

# 挂载主机目录
docker run --name xxx -d -v 宿主机目录:容器目录 -v 宿主机目录:容器目录 image_name/image_id
 
# 宿主机中文件拷贝到容器中
docker cp 宿主机文件位置 容器名:容器目录
docker cp C:/Users/admin/Desktop/index.html nginx01:/usr/share/nginx/html

# 容器里的文件拷贝到宿主机中
docker cp 容器名:容器目录 宿主机目标位置
docker cp nginx01:/usr/share/nginx/html/index.html c:/users/admin/desktop/test

# RUN执行会被缓存,下次构建不使用缓存需指定--no-cache
docker build --no-cache

# CMD在构建容器后调用,就是在容器启动时才进行调用
CMD ["可执行文件", "参数1", "参数2"]
CMD 命令 参数1 参数2

# 如果CMD和ENTRYPOINT同时存在,那么CMD会作为ENTRYPOINT的参数
# Dockerfile中只允许有一个ENTRYPORINT命令,多个指定时会覆盖前面的设置,只执行最后的ENTRYPOINT指令。

# 设置环境变量
ENV <key> <value>
ENV <key>=<value>

# EXPOSE 标识暴露端口
EXPOSE <port> [<port>...]
EXPOSE 80
EXPOSE 8080 443
EXPOSE 9980/tcp 10080/udp
# EXPOSE并不会让容器的端口访问到主机,需要的docker run时通过-p参数来发布这些端口,
# 或者通过-P随机端口映射,容器内部端口随机映射到主机的端口


# 自定义网络
# 创建自定义网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 net1

# 启动docker容器时指定网络
docker run -d --name xxx --net mynet 容器名

# 不同网络内连接
docker network connect net1 容器名

# 部署MySQL
docker run -d --name mysql01 -p 13306:3306 -v C:/Users/admin/mysql/conf:/etc/mysql -v C:/Users/admin/mysql/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=111111 -e MYSQL_DATABASE=mydb --net net1 --restart always mysql:5.7