一文学会Docker
代码语言:javascript复制docker run -d --name mariadb #新建并启动容器-d表示后台运行容器
-p 3344:3306 #端口:容器默认端口 ——指定有个本机端口映射到容器端口
-e MYSQL_ROOT_PASSWORD=123456 #向容器内传递环境变量,启动容器时用户可以动态传参
-v /root/nextcloud/mariadb:/var/lib/mysql #保持容器文件和外部目录文件同步前面是外部目录后面是容器目录
--restart unless-stopped #表示容器退出时总是重启,但是不考虑docker守护进程运行时就已经停止的容器
mariadb:10.5.12 #镜像名字和版本
docker run -it --name 新名字 镜像名 #新建并启动容器。不会立即进入容器,exit退出后容器会继续运行
内容 | 说明 |
---|---|
-d | 守护进程,后台运行容器(启动便退出,再次进入exit退出后会后台运行) |
-i | 是以交互模式启动(-i和-t通常在一起使用) |
-t | 是为它分配一个命令行终端(-i和-t通常在一起使用) |
-e | 向容器内传递环境变量,启动容器时用户可以动态传参 |
-p | 端口:容器默认端口 ——指定一个本机端口映射到容器内端口,使得可以从宿主机访问容器内。小写p |
-P | 随机分配映射端口。大写P |
-v | 宿主机目录(文件):容器目录(文件):文件映射,保持容器文件与外部同步 |
-u | 以某个用户身份创建容器 |
--name nginx | 容器命名 |
-m, --memory bytes | 设置容器使用内存最大值 |
-h, --hostname string | 指定容器的 host name |
--dns 8.8.8.8 | 指定容器 dns 服务器 |
-e username="ritchie" | 设置环境变量 |
--restart= | Docker 重启后,容器是否自动重启 |
--network=host | 将容器网络更改为host,可以是任何你创建的网络或是默认网络 |
--restart=参数
--restart=always 容器退出时,docker会总是会自动重启容器
--restart=on-failure:3 表示容器的退出状态码非0(非正常退出),自动重启容器,自动从其3次。超过3次则不再重启
--restart=no 默认值,容器退出时,docker不自动重启
--restart=unless-stopped 表示容器退出时总是重启,但是不考虑docker守护进程运行时就已经停止的容器
网络配置
代码语言:javascript复制docker network create 网络名称 #添加网络
docker network rm 网络名称 #删除网络
docker network disconnect 网络名称 容器名称 #解除容器绑定的网络
docker network connect 网络名称 容器名称 #指定网络给容器
docker run --network=host 容器名称 #将容器网络更改为host
docker network inspect 网络名称 #查看网络详细信息
名称 | 说明 |
---|---|
bridge | 虚拟网桥,默认模式,每一个容器有独立的ip,并将容器连接到docker0网桥上 |
host | 使用宿主机的ip和端口号,容器不会虚拟出自己的网卡不可配置ip |
none | 有独立的network namespace,但是并没用任何网络设置 |
container | 和另一个指定容器共享ip和端口号,不会虚拟出网卡或者配置ip |
镜像拉取及常用操作
代码语言:javascript复制docker search 镜像名称 #查找镜像
docker pull 镜像名:版本 #拉取镜像latest
docker images #查看镜像列表
docker ps #查看正在运行的docker容器,加上-a 表示查看所有的容器
exit #容器停止退出。
ctrl P Q #容器不停止退出
docker start -i 容器名 #交互模式启动容器
docker restart 容器名 #重启容器
docker stop 容器名 #关闭容器
docker kill 容器名 #暴力关闭容器
docker rm:容器名或id #删除已停止的容器。
docker rmi:镜像id #删除指定id镜像
docker inspect 容器名称 #查看容器配置
docker rename 容器名 新名字 #修改容器名字
service docker start #docker启动
service docker stop #docker停止
service docker restart #docker重启
在容器外执行命令
代码语言:javascript复制docker exec -it 容器名 bash #登录容器
docker exec -it --user 用户名 容器名 bash #以指定用户登录容器
docker exec -it --user 用户名 容器名 命令 #不进入容器,登录容器执行命令
不能登录容器
代码语言:javascript复制usermod -s /bin/bash www-data
su www-data
构建镜像
代码语言:javascript复制docker build -t 镜像名字:镜像标签 目录