freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

docker 安装与基础配置(速食版)
FreeBuf_331495 2021-01-18 08:36:17 51870

官方文档: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:
# 网络安全技术 # Docker # Dockerfile
本文为 FreeBuf_331495 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
FreeBuf_331495 LV.1
编辑你的个人简介,让别人懒得看!
  • 1 文章数
  • 0 关注者
文章目录