Docker使用记录
Ubuntu安装Docker
- 操作系统要求
- 要安装 Docker 引擎,您需要这些 Ubuntu 版本的 64 位版本:
- Ubuntu Groovy 20.10
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS)
- Ubuntu Xenial 16.04 (LTS)
-
卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
-
使用存储库安装
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
-
添加 Docker 的官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
检查GPG密钥
sudo apt-key fingerprint 0EBFCD88
-
安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
免sudo运行Docker
- 将用户添加到docker用户组
sudo usermod -aG docker ${USER}
- 重启docker
systemctl restart docker
- 注销/重启电脑
修改镜像源以及本地位置
在/etc/docker/
路径下创建daemon.json
写入以下内容
registry-mirrors
:镜像地址
data-root
: 本地存放Docker的位置
{
"registry-mirrors": [
"https://xxxxxx.mirror.aliyuncs.com"
],
"data-root": "/data/docker/.docker"
}
重启Docker
systemctl restart docker
Docker常用命令
docker pull ubuntu:latest
拉取标签为latest的ubuntu镜像
docker ps
显示正在运行容器
docker run -d --name ubuntux ubuntu:latest
后台运行name为ubuntux,镜像为latest的ubuntu的容器(后面详细讲)
docker start <容器id>/<容器name>
启动容器
docker restart <容器id>/<容器name>
重启容器
docker stop <容器id>/<容器name>
停止容器
docker rm <容器id>/<容器name>
删除容器
docker rmi <镜像id>
删除本地的镜像
docker network ls
显示docker的全部网络
docker run 参数解释
-p 80:88
将容器88端口映射到宿主80端口-d
以后台运行并返回容器id-it
命令行交互式运行容器-e XXXX=xxxx
设置环境变量-v /data/:/www
将容器的/www/文件夹挂载到宿主机上的/data/文件夹--net=host
使用名称为host的网络(内置) 本机网络--restart=always
无论如何都重启参数-c 4096
: Docker使用CPU的权重(默认1024)-m 10G
: Docker 内存使用上限(根据自己机器硬件条件调整)
Docker 创建桥接网络
创建网段为172.0.0.0-172.0.0.255 网关为172.0.0.1 名称为ism0的桥接网络
docker network create --driver bridge \
--subnet=172.0.0.0/24 \
--gateway=172.0.0.1 ism0
Docker容器代理
在主目录粗创建 ~/.docker/config.json
文件,写入
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"httpsProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
httpProxy
: 指向本机的http代理httpsProxy
: 指向本机的https代理noProxy
: 不进行代理的域名,
分割
Dockerd 代理
在执行docker pull
时,是由守护进程dockerd来执行。 因此,代理需要配在dockerd的环境中。 而这个环境,则是受systemd所管控,因此实际是systemd的配置。
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
在这个proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker-Compose 安装
-
通过curl安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
提权可运行
sudo chmod +x /usr/local/bin/docker-compose
-
创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
-
检查安装成功
docker-compose --version
Docker 镜像分享
- 主机A有镜像nginx,版本为v1.0版本。执行命令:
docker save nginx:v1.0 -o /root/nginx.tar
将nginx:v1.0保存为nginx.tar包
-
通过scp命令将nginx.tar包拷贝给主机B。
-
在主机B上执行命令:
docker load -i /root/nginx.tar
从nginx.tar包load为镜像nginx:v1.0
注意:执行docker save nginx:v1.0 -o /root/nginx.tar命令,如果不加版本v1.0,会将主机A上所有版本nginx镜像都save到一个nginx.tar包。