摘要
安装 CentOS/Ubuntu (1)直接安装(版本较低)
(2)安装高版本
Centos
1 2 3 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache
Ubuntu
1 2 3 4 5 6 7 8 9 10 11 12 sudo apt -y install apt-transport-https ca-certificates curl software-properties-common sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" sudo apt -y update sudo curl -fsSL http://mirrors.tencent.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] http://mirrors.tencent.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" sudo curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/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 -y update
列出Docker版本
Centos
1 yum list docker-ce --showduplicates | sort -r
CentOS8 默认使用 podman 代替 docker ,所以需要 containerd.io
安装containerd.io
1 yum -y install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
Ubuntu
1 sudo apt-cache madison docker-ce|awk '{print $3}'
安装指定版本
Centos
1 yum install docker-ce-<VERSION_STRING>
Ubuntu
1 sudo apt -y install docker-ce=5:19.03.15~3-0~ubuntu-focal
修改加速器,添加私有仓库,修改docker默认存储位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 mkdir /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "data-root" : "/data/docker" , "registry-mirrors" : ["https://ojtwovh1.mirror.aliyuncs.com" ], "experimental" : true , "log-driver" :"json-file" , "log-opts" : {"max-size" :"500m" , "max-file" :"5" } } sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "data-root" : "/data/docker" , "registry-mirrors" : ["https://ojtwovh1.mirror.aliyuncs.com" ], "experimental" : true , "log-driver" :"json-file" , "log-opts" : {"max-size" :"500m" , "max-file" :"5" } } EOF
启动
1 2 systemctl start docker systemctl enable docker
为了避免每次命令都输入sudo,可以设置用户权限
1 sudo usermod -a -G docker $USER
在Alpine Linux安装 首先要注意 docker 的包是位于社区仓库里的,需要取消 community注释
直接安装(最新版) 1 2 apk add docker apk add docker-compose
安装旧版本 安装一些依赖
1 apk add --no-cache iptables ip6tables python3
创建docker的openrc文件
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 cat > /etc/init.d/docker <<'EOF' #!/sbin/openrc-run supervisor=supervise-daemon name="Docker Daemon" description="Persistent process that manages docker containers" description_reload="Reload configuration without exiting" command ="${DOCKERD_BINARY:-/usr/bin/dockerd} " command_args="${DOCKER_OPTS} " DOCKER_LOGFILE="${DOCKER_LOGFILE:-/var/log/${RC_SVCNAME} .log} " DOCKER_ERRFILE="${DOCKER_ERRFILE:-${DOCKER_LOGFILE} } " DOCKER_OUTFILE="${DOCKER_OUTFILE:-${DOCKER_LOGFILE} } " supervise_daemon_args="--stderr \"${DOCKER_ERRFILE} \" --stdout \"${DOCKER_OUTFILE} \"" extra_started_commands="reload" rc_ulimit="${DOCKER_ULIMIT:--c unlimited -n 1048576 -u unlimited} " retry="${DOCKER_RETRY:-TERM/60/KILL/10} " depend () { need sysfs cgroups } start_pre () { echo "" } reload () { ebegin "Reloading configuration" $supervisor $RC_SVCNAME --signal HUP eend $? } EOF chmod +x /etc/init.d/docker curl -fsSL https://opentuna.cn/docker-ce/linux/static/stable/x86_64/docker-19.03.15.tgz | tar -xvz --strip-components 1 --directory=/usr/bin
修改配置
1 2 3 4 5 6 7 8 9 10 11 mkdir /etc/docker cat << EOF > /etc/docker/daemon.json { "data-root": "/data/docker", "registry-mirrors": ["https://ojtwovh1.mirror.aliyuncs.com"], "experimental": true, "insecure-registries": ["192.168.0.2"], "log-driver":"json-file", "log-opts": {"max-size":"500m", "max-file":"5"} } EOF
添加自启并启动
1 2 rc-update add docker boot service docker start
如果启动报错failed to start daemon: Devices cgroup isn't mounted
执行以下脚本
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 #!/bin/sh set -eif grep -v '^#' /etc/fstab | grep -q cgroup; then echo 'cgroups mounted from fstab, not mounting /sys/fs/cgroup' exit 0 fi if [ ! -e /proc/cgroups ]; then exit 0 fi if [ ! -d /sys/fs/cgroup ]; then exit 0 fi if ! mountpoint -q /sys/fs/cgroup; then mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup fi cd /sys/fs/cgroupfor sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do mkdir -p $sys if ! mountpoint -q $sys ; then if ! mount -n -t cgroup -o $sys cgroup $sys ; then rmdir $sys || true fi fi done exit 0
升级版本 停止容器服务
卸载原有容器 1 2 3 yum -y remove docker \ docker-client \ docker-common
安装docker镜像源 1 2 3 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache
安装新版本 1 yum install docker-ce-19.03.9-3.el7
修改存储路径 使用之前的数据目录,指定之前的储存目录,我们之前Docker的储存目录是 /data/docker
修改docker默认存储位置,配置镜像加速器,添加私有仓库地址
1 2 3 4 5 6 7 8 9 10 cat << EOF > /etc/docker/daemon.json { "data-root": "/data/docker", "registry-mirrors": ["https://ojtwovh1.mirror.aliyuncs.com"], "experimental": true, "insecure-registries": ["192.168.0.2"], "log-driver":"json-file", "log-opts": {"max-size":"500m", "max-file":"5"} } EOF
启动 1 systemctl enable --now docker
升级之后可能存在的问题 以前Docker版本为1.13.1,
,在对其版本升级到18.06.1
之后,启动旧版本创建的容器时遇到这个错误:
查资料得知:因为「当您从不兼容的版本升级docker并且升级后无法启动docker容器时会出现这种情况」,解决办法如下:
1 2 grep -rl 'docker-runc' /data/docker/containers/ | xargs sed -i 's/docker-runc/runc/g' systemctl restart docker
/data/docker/containers/
为docker存储目录
添加中文字体 由于某些项目需要用到中文字体
Dockerfile中添加
1 COPY simsun.ttc /usr/share/fonts/simsun.ttc
执行以下命令查看系统中的中文字体
docker-compose安装 1 2 pip3 install docker-compose