Docker环境设置

Posted by Simon Dong on 2018-11-10

0x01 安装源配置

Debian/Ubuntu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#删除原先的安装
sudo apt remove docker-engine docker.io

#安装依赖
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

#安装PGP密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#OR
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

#更新镜像源
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"

# 安装软件
sudo apt update && sudo upgrade
sudo apt-get install docker-ce

CentOS/RedHat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#删除原先的安装
sudo yum remove docker docker-common docker-selinux docker-engine

#安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

#安装repo
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

#替换docker源地址
sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# 安装软件
sudo yum makecache fast
sudo yum install docker-ce

0x02 Docker 阿里云镜像源配置

  1. 申请阿里云帐号
  2. 访问容器镜像服务中的镜像加速器,得到加速器地址

1547125158365

  1. 修改或新增/etc/docker/daemon.json(注意替换\部分)

    1
    2
    3
    {
    "registry-mirrors": ["https://<ID>.mirror.aliyuncs.com"]
    }

    或者使用阿里云给出的脚本

    1
    2
    3
    4
    5
    6
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://<ID>.mirror.aliyuncs.com"]
    }
    EOF
  2. 重启Docker服务

    1
    2
    3
    4
    5
    6
    7
    #ubuntu
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    #centos
    sudo systemctl daemon-reload
    sudo systemctl restart docker

Update:微软提供的国内镜像 https://dockerhub.azk8s.cn

0x03 为Docker设置代理

  1. 为Docker服务创建systemd目录

    1
    mkdir -p /etc/systemd/system/docker.service.d
  2. docker.service.d目录下创建文件http-proxy.conf,内容为

    1
    2
    3
    4
    [Service]
    Environment="HTTP_PROXY=<proxy>"
    Environment="HTTPS_PROXY=<proxy>"
    Environment="NO_PROXY=127.0.0.1;localhost;192.168.0.0/24;dockerhub.azk8s.cn;<xxx>.mirror.aliyuncs.com"
  3. 刷新设置

    1
    sudo systemctl daemon-reload
  4. 查看设置是否生效

    1
    sudo systemctl show --property Environment docker
  5. 重启docker服务

    1
    sudo systemctl restart docker

0x04 Docker常用命令

Docker Command Reference

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#获取帮助
docker help
#获取某一命令的帮助
docker help <command>

#--------------镜像操作--------------#
# 查询镜像
docker search <key>

#下载镜像
docker pull <ImageName>
docker pull <ImageName>:<ImageVersion>

#列出本地已有镜像
docker image ls

#删除镜像
docker image rm <ImageID>

#--------------窗口操作------------------#
#列出容器
#正在运行的容器
docker ps
#所有容器
docker ps -a
#条件过滤(1)
docker ps -a --filter "status=exited"

#启动容器
#从镜像启动
docker run --name=<ContainerName> <ImageName>
#后台运行
docker run -d <ImageName>
#端口映射
docker run -d -p <HostPort>:<ContainerPort> <ImageName>
# -p == --publish
#挂载主机目录
docker run -d -v <HostDir>:<ContainerDir> <ImageName>
# -v == --volume
#主机重启后自动运行容器
docker run -d --restart=always <ImageName>

#启动已停止的容器
docker run <ContainerID>

#与容器交互
#启动时进入
docker run -it -d <ContainerID> <BashCommand>
#进入已运行的容器
docker exec -it <ContainerID> <BashCommand>
#example
docker exec -it
docker exec -it 1831b /bin/bash

# 停止容器
docker stop <containerID>

#删除容器
docker rm <ContainerID>

#批量删除已停止的容器
docker ps -a -q --filter "status=exited" | xargs docker rm
#删除所有容器
docker ps -a -q | xargs -I % bash -c "docker stop % && docker rm %"

#查看容器运行日志
docker logs -f <ContainerID>

(1) 条件过滤