Docker使用记录

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)
  1. 卸载旧版本

    sudo apt-get remove docker docker-engine docker.io containerd runc

  2. 使用存储库安装

    sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

  3. 添加 Docker 的官方 GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  4. 检查GPG密钥

    sudo apt-key fingerprint 0EBFCD88

  5. 安装Docker

    sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io

免sudo运行Docker

  1. 将用户添加到docker用户组 sudo usermod -aG docker ${USER}
  2. 重启docker systemctl restart docker
  3. 注销/重启电脑

修改镜像源以及本地位置

/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 安装

  1. 通过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

  2. 提权可运行

    sudo chmod +x /usr/local/bin/docker-compose

  3. 创建软链接

    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

  4. 检查安装成功

    docker-compose --version

Docker 镜像分享

  1. 主机A有镜像nginx,版本为v1.0版本。执行命令:

docker save nginx:v1.0 -o /root/nginx.tar 将nginx:v1.0保存为nginx.tar包

  1. 通过scp命令将nginx.tar包拷贝给主机B。

  2. 在主机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包。

资料参考