docker 安装与基础配置(速食版)
2021-01-18 09:36:17 Author: www.freebuf.com(查看原文) 阅读量:86 收藏

官方文档:https://docs.docker.com/

中文社区:https://www.docker.org.cn/index.html

安装/卸载

安装

  • 进入官方文档

  • 打开侧边栏

  • Get Docker-> Docker Engine - CommunityDocker Enterprise-> 选择属于自己操作系统的教程进行安装

本地步骤(20190804)

  1. 更新包列表
    $ sudo apt-get update

  2. 安装包以允许通过HTTPS使用存储库
    $ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

  3. 添加官方 GPG 密钥
    $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    搜索指纹的最后 8 个字符验证密钥指纹
    $ sudo apt-key fingerprint 0EBFCD88

  4. 设置稳定版(stable)的存储库,另外还可以设置每日最新版本(nightly)或测试版本(test)
    $ sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

  5. 更新包列表
    $ sudo apt-get update

  6. 开始安装 Docker Engine
    $ sudo apt-get install -y docker-ce docker-ce-cli containerd.io

  7. 另外建议做一下添加用户至 docker 组和更改 docker 镜像源

需注意的步骤

  1. 添加GPG密钥的时候使用国内GPG$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

  2. 向 sources.list中添加Docker软件源,参考

  3. 安装完成后添加当前用户进docker组,以后就不用每次输命令都用sudo啦,参考

Code01

$ sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

Code02

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
# 注销,重新登录
$ init 5

修改镜像源(可选)

这部分内容主要是为了加速镜像源的下载,否则直接下载下载速度可能会很低,毕竟docker服务器在国外。

国内的镜像源有

  • docker官方中国区:https://registry.docker-cn.com

  • 网易:http://hub-mirror.c.163.com

  • ustc:http://docker.mirrors.ustc.edu.cn

  • 阿里云:http://<你的ID>.mirror.aliyuncs.com

方法一(推荐)

修改 /etc/docker/daemon.json 文件

docker默认的源为国外官方源,下载速度较慢,可改为国内镜像加速下载镜像

华中科大官方文档:https://lug.ustc.edu.cn/wiki/mirrors/help/docker

Linux 编辑该文件:/etc/docker/daemon.json

Windows 编辑该文件:%programdata%\docker\config\daemon.json

# 推荐华中科大,网易的不稳定
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

ubuntu14.04 以下使用下面的方法

对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址:

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

方法二

修改 /etc/default/docker 文件

$ sudo echo "DOCKER_OPTS=\"--registry-mirror=http://hub-mirror.c.163.com\"" >> /etc/default/docker

方法三

在下载的时候,指定镜像源

$ docker run hello-world --registry-mirror=https://docker.mirrors.ustc.edu.cn

方法四

systemctl 处设置启动参数

$ sudo systemctl edit docker.service
$ /etc/systemd/system/docker.service.d/override.conf
# 加入以下内容
[Service]
ExecStart=/usr/bin/docker -d -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn

完成后重启docker

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

脚本安装

官方脚本地址:https://github.com/docker/docker-install

  • 官方安装:$ curl -sSL https://get.docker.com/ | sh

  • 阿里云安装(20190801安装失败):$ curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

  • DaoCloud安装(20191024安装失败):$ curl -sSL https://get.daocloud.io/docker | sh

  • 官方安装,指定阿里源安装(20200214安装失败):$ curl -fsSL https://get.docker.com -o get-docker.sh | sudo sh get-docker.sh --mirror Aliyun

速食命令

# step 1: 安装必要的一些系统工具
$ sudo apt-get update
$ sudo apt-get -y install apt-transport-https ca-certificates $ curl software-properties-common
# step 2: 安装GPG证书
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
$ sudo apt-get -y update
$ sudo apt-get -y install docker-ce
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

卸载

  1. 卸载软件包$ sudo apt-get purge docker-ce

  2. 主机上的镜像、容器、卷或自定义配置文件不会自动删除。要删除所有镜像,容器和卷使用该命令$ sudo rm -rf /var/lib/docker

服务命令

summary

常用命令

docker 相关

  • 拉取容器$ docker pull <container-name>

  • 运行容器$ docker run <container-name>

  • 运行容器在停止后自动销毁$ docker run --rm <container-name>

  • 后台运行容器并映射端口$ docker run -d -p <container-port1>:<host-port1> -p <container-port2>:<host-port2> <container-name>

  • 后台运行容器并映射目录$ docker run -d -v <host-dir1>:<container-dir1> -v <host-dir2>:<container-dir2> <container-name>

  • 测试容器连通性$ docker exec -it <source-container-name> ping <target-container-name>

  • 容器错误排查$ docker logs <container-name>

  • 查看已有网络$ docker network ls

  • 杀死所有正在运行的容器$ docker kill $(docker ps -a -q)

  • 删除所有已经停止的容器$ docker rm $(docker ps -a -q)

  • 删除所有未打 dangling 标签的镜像$ docker rmi $(docker images -q -f dangling=true)

  • 删除所有镜像$ docker rmi $(docker images -q)

  • 进入容器$ docker exec -it <target-container-name> /bin/bash

  • 查看容器进程$ docker top <target-container-name>

  • 查看容器挂载的目录$ docker inspect <target-container-name> | grep Mounts -A 20

  • 查看容器地址$ docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

    • 其它方法:$ docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

    • 显示所有:$ docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

命令创建别名

# ~/.bash_aliases

# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'

# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'

# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'

# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'

compose 相关

  1. 如果compose文件名字非默认的 docker-compose.yml或 docker-compose.yaml,需要在docker-compose命令后面加上-f <compose-filename>参数。

  2. 在命令后面可加上container-name指定要操作的容器,如:docker-compose logs <container-name>

  3. 构建启动容器docker-compose up -d

  4. 暂停容器docker-compose pause

  5. 恢复容器docker-compose unpause

  6. 删除容器docker-compose rm

  7. 停止容器docker-compose stop

  8. 启动容器docker-compose start

  9. 登录到容器中docker-compose exec bash

  10. 删除所有容器,镜像docker-compose down

  11. 显示所有容器docker-compose ps

  12. 重新启动容器docker-compose restart

  13. php-fpm中不启动关联容器,并容器执行$ php -v执行完成后删除容器docker-compose run --no-deps --rm php-fpm php -v

  14. 构建镜像docker-compose build

  15. 不带缓存的构建docker-compose build --no-cache

  16. 查看的日志docker-compose logs

  17. 验证配置文件docker-compose config -q

  18. 以json的形式输出的docker日志docker-compose events --json

docker 命令

官方文档:https://docs.docker.com/ee/

参考地址:http://www.runoob.com/docker/docker-command-manual.html

dockerfile 指令解析

官方文档:https://docs.docker.com/engine/reference/builder/

参考地址:https://yeasy.gitbooks.io/docker_practice/image/dockerfile/

python 模板

FROM python:3.7

COPY ./pip.conf /root/.config/pip/
WORKDIR /source_code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

构建

  1. 新建文件夹mkdir <dirname>(可选,但推荐)

  2. 在目标目录中创建 Dockerfile文件$ vim Dockerfile

  3. 写入自定义配置内容...

  4. 使用docker build .命令构建新的镜像,注意那个点,表示使用当前目录配置文件,若在构建时需要对镜像命名,则使用-t参数docker build -t <image-name> .

  5. 使用docker run -it <image-name> bash进入系统

在构建部分有版本要求的镜像时尽量不要用 lastst版本,为了配置个国内源,曾在寻找 ubuntu:lastst 版本号中消耗大量时间

compose 命令解析

官方文档:https://docs.docker.com/compose/compose-file/

参考地址:https://www.jianshu.com/p/2217cfed29d7

注意:配置版本有区别

volumes

共享卷

example

version: "3.2"
services:
  web:
    image: nginx:alpine
    volumes:
      - type: volume
        source: mydata
        target: /data
        volume:
          nocopy: true
      - type: bind
        source: ./static
        target: /opt/app/static

  db:
    image: postgres:latest
    volumes:
      - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
      - "dbdata:/var/lib/postgresql/data"

volumes:
  mydata:
  dbdata:

短语法

volumes:
  # 在指定路径创建一个卷
  - /var/lib/mysql

  # 指定绝对路径映射
  - /opt/data:/var/lib/mysql

  # 主机上相对于合成文件的路径
  - ./cache:/tmp/cache

  # 用户相对路径
  - ~/configs:/etc/configs/:ro

  # 命名卷
  - datavolume:/var/lib/mysql

长语法

  • type -> 装载类型卷、绑定或tmpfs

  • source -> 装载源、绑定装载主机上的路径或顶层卷密钥中定义的卷的名称。不适用于tmpfs安装

  • target -> 安装卷的容器中的路径

  • read_only -> 是否只读

  • bind -> 配置其他绑定选项

    • propagation -> 用于绑定的传播模式

  • volume -> 配置其他卷选项

    • nocopy -> 创建卷时禁止从容器复制数据

  • tmpfs -> 配置其他的 tmpfs 选项

    • size -> tmpfs 装载的大小(以字节为单位)

nginx 配置模板

version: "3"

services:
  nginx:
    image: nginx
    ports:
      - "80:80"
      - "443:443"
    networks:
      - www
    volumes:
      # 主配置文件
      - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
      # 站点配置文件
      - "./nginx/conf.d:/etc/nginx/conf.d"
      # 日志文件
      - "./nginx/log:/var/log/nginx"
      # 运行文件
      - "./nginx/run:/run"

networks:
  www:

python 模板

version: "3"

services:
  backend:
    build: ./backend/
    networks:
      - www

networks:
  www:

文章来源: https://www.freebuf.com/articles/others-articles/261068.html
如有侵权请联系:admin#unsafe.sh