linux环境:centos7
1. 安装docker
1.1 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 配置镜像源, 以下二选一
[官方源] yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[阿里云源] yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3 安装docker
yum -y install docker-ce docker-ce-cli containerd.io
1.4 查看安装结果(显示版本相关信息则安装成功)
docker -v
docker version
1.5 修改资源路径(推荐)
mkdir /etc/docker
vi /etc/docker/daemon.json
{
"data-root": "/home/data"
}
1.6 自启、启动
systemctl enable docker
systemctl restart docker
2. 运行容器
2.1 拉取镜像
docker pull [image_name]
2.2 运行容器
docker run -dit -p 8080:8080 --name [container_name] --net=[network_name] --privileged=true -v /home/:/www/ [images] /bin/bash
-d # 后台运行并返回容器ID
-i # 以交互式模式运行容器,通常和-t一起使用
-t # 为容器分配一个伪输入终端, 通常与-i一起使用
-p # 端口映射,[宿主机端口]:[容器端口]
--name="container_name" # 制定容器名称
-v # 挂载目录,[宿主机目录]:[容器目录]
-m # 设置容器使用内存最大值
--net="my_net" # 指定容器网络,支持:bridge/host/none/container四种类型
--privileged=true # 完整的容器功能(特权),root权限
--env-file=[] # 从指定文件读入环境变量
--cpuset="0-2" or --cpuset="0,1,2" # 绑定容器到指定CPU运行
示例(mysql5.7):
docker run -dit -p 3306:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=12345678 --privileged=true -v /home/data/mysql5.7/conf:/etc/mysql -v /home/data/mysql5.7/logs:/var/log/mysql -v /home/data/mysql5.7/data:/var/lib/mysql --restart=always mysql:5.7
3. docker网络(容器之间访问)
docker network create network_name # 创建一个网络
docker network inspect network_name # 查看网络的详细信息
docker network ls # 列出当前系统中的所有网络
docker network disconnect # 从网络中断开一个容器
docker network rm # 删除一个或多个网络
docker network prune # 删除所有未使用的网络
docker network connect [OPTIONS] [network_name] CONTAINER # 将已有容器连接到一个网络
--alias # 为容器添加网络范围的别名
--ip # 指定IP地址
--ip6 # 指定IPv6地址
--link # 添加链接到另一个容器
--link-local-ip # 添加容器的链接本地地址
示例:
docker network create my_net
docker network connect --alias mysql5.7 my_net mysql5.7
4. 容器与宿主机时间同步
docker cp /usr/share/zoneinfo/Asia/Shanghai [CONTAINER]:/etc/localtime
5. 对现有容器添加或修改端口映射
systemctl stop docker
vi /home/data/containers/[hash_of_the_container]/hostconfig.json
...."PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8080"}]}.... # "PortBindings"这里 80 是容器端口, 8080 是宿主机端口
vi /home/data/containers/[hash_of_the_container]/config.v2.json
# 在"Tty": true, 前面添加一个配置项 "ExposedPorts":{"80/tcp":{}},若已有ExposedPorts,则追加 "81/tcp":{}
systemctl start docker