ubuntu系统docker安装与使用总结

ubuntu系统docker安装与使用总结

在Ubuntu18.04 LTS 64位系统下通过apt的Docker官方源安装最新的Docker CE(Community Edition)即Docker社区版;

Docker安装
卸载可能存在旧版本的docker:
$ sudo apt remove docker docker-engine docker-ce docker.io
更新apt包索引缓存
$ sudo apt update
使apt可以通过https使用Repository
$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg-agent
添加Docker官方GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加docker源信息到/etc/apt/sources.list.d/docker.list:
$ sudo bash -c "echo deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable > /etc/apt/sources.list.d/docker.list"
或者添加docker源信息到/etc/apt/sources.list
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

再次更新apt包索引缓存
$ sudo apt update

确认Docker的源信息是否正确, 新的源是否添加成功:
$ sudo apt-cache madison docker-ce

安装最新版本的Docker CE:
$ sudo apt install -y docker-ce
如果需要安装某个指定版本的Docker CE,而不是最新版本
通一下命令安装指定版本的包:$ sudo apt install docker-ce=[版本字符串]
其中[版本字符串]为通过$ sudo apt-cache madison docker-ce 查询到的结果第二列;

本次验证时通过以上安装命令下载速度较慢,可以直接到以下网站把需要的安装包下载到本地
https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/
如下载
containerd.io_1.2.6-3_amd64.deb 
docker-ce-cli_19.03.1~3-0~ubuntu-bionic_amd64.deb 
docker-ce_19.03.1~3-0~ubuntu-bionic_amd64.deb
可以先执行一下$ sudo apt install -y docker-ce 命令
然后查看正在下载的文件并进行手动替换;
因为apt-get install xxx 这样的命令,一般会将下载文件放在 /var/cache/apt/archives目录下然后安装;下载中的文件放在/var/cache/apt/archives/partial/;
apt 的相关文件
/etc/apt/sources.list            设置软件包的获取来源
/etc/apt/apt.conf                apt配置文件
/etc/apt/apt.conf.d/             apt的零碎配置文件
/etc/apt/preferences             版本参数
/var/cache/apt/archives/         存放已经下载的软件包
/var/cache/apt/archives/partial  存放正在下载的软件包
/var/lib/apt/lists/              存放已经下载的软件包详细信息
/var/lib/apt/lists/partial/      存放正在下载的软件包详细信息

sudo ls /var/cache/apt/archives/partial/
找到对应的文件名,有可能与手动下载过来的不完全一致,然后ctrl-c中断sudo apt install -y docker-ce 命令
然后进行文件名手动替换;
然后再重新执行sudo apt install -y docker-ce 命令即可完成安装;
以上3个文件用同样的方式进行替换和安装;

Docker安装验证
$ sudo docker -v
Docker version 19.03.1, build 74b1e89

查看Docker安装版本详细信息:
$ sudo docker version
Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:21:05 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.1
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.5
  Git commit:       74b1e89
  Built:            Thu Jul 25 21:19:41 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

启动Docker
查看docker服务是否启动:
$ sudo systemctl status docker
如果Docker未启动,则启动Docker:
$ sudo systemctl start docke
运行Hello World,校验Docker是否安装成功:
$ sudo docker run hello-world
运行这个命令会下载一个hello-world的镜像, 并且运行在一个容器中。
如果成功会有如下输出:
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

添加当前用户到docker的用户组
创建docker用户组
$ sudo groupadd docker
将当前用户加到组中
$ sudo usermod -aG docker ${USER}
${USER}变量指当前用户名。
然后重启系统,以后执行docker命令时就不用再加sudo了
$ docker run hello-world


配置加速器
docker img使用的默认镜像是docker hub,可能速度有限;一般建议配置加速器,比如aliyun;
注册登录后打开 开发者平台 – 管理中心 – 加速器 https://dev.aliyun.com/search.html
可以看到 “您的专属加速器地址” 如 https://xxx.mirror.aliyuncs.com

参考https://blog.csdn.net/wireless911/article/details/88989620
如 "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]

$ sudo touch /etc/docker/daemon.json
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}  
EOF

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

Docker开启远程访问
进入/etc/systemd/system/目录
$ cd /etc/systemd/system/
查找docker.service文件并打开, 如/etc/systemd/system/multi-user.target.wants/docker.service
注释:ExecStart=/usr/bin/dockerd -H fd://
添加:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
保存退出

刷新配置
$ sudo systemctl daemon-reload
重新启动Docker守护进程
$ sudo systemctl restart docker
确认是否重启成功
$ sudo ps -ef | grep docker

测试Docker远程通讯是否成功开启
浏览器访问:http://Docker服务器IP:2375/info
Docker服务器校验远程访问
$ docker -H tcp://Docker服务器IP:2375 images
Docker服务器校验本地访问
$ docker info

修改镜像和容器存放路径比如有默认的/var/lib/docker改为/data/docker
首先使用命令查看docker root dir
$ docker info | grep -i root
Docker Root Dir: /var/lib/docker
修改配置文件
在ubuntu中是 /etc/default/docker
在centos6是 /etc/sysconfig/docker
如果是centos6则添加
OPTIONS=--graph="/data/docker" --selinux-enabled -H fd://
如果是ubuntu系统则添加
OPTIONS=--graph="/data/docker" -H fd://#
或者DOCKER_OPTS="-g /data/docker"
最后重新启动

或者修改daemon.json配置文件
sudo vi /etc/docker/daemon.json
在大括号中添加如下一行
"graph": "/data/docker",
如:
{
    "graph": "/data/docker"
}

然后重新reload配置文件
sudo systemctl daemon-reload
重启docker服务
sudo systemctl restart docker.service
再次确认
$ docker info | grep -i root

下载ubuntu镜像
docker search ubuntu
docker pull ubuntu


创建自己的image
可以使用命令手动创建自己的image并发行,但是这样的镜像别人是不敢用的,因为别人不知道你对这个镜像做了什么,不够透明;
因此可以使用dockerfile来自动化创建并便于审计;

Dockerfile中主要命令
组成部分            命令
基础镜像信息        FROM
维护者信息            MAINTAINER
镜像操作指令        RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
容器启动时执行指令    CMD、ENTRYPOINT

各命令详解
FROM
指定哪种镜像作为新镜像的基础镜像, 如 FROM ubuntu:18.04

MAINTAINER
指明该镜像的作者和其电子邮件,如:MAINTAINER dockeruser "[email protected]"

RUN
在新镜像内部执行的命令,比如安装一些软件、配置一些基础环境,可使用\来换行,如:
RUN echo 'hello docker!' /usr/local/file.txt
也可以使用exec格式RUN ["executable", "param1", "param2"]的命令,如:
RUN ["apt-get","install","-y","nginx"]
要注意的是,executable是命令,后面的param是参数

参考资料:
https://www.runoob.com/docker/ubuntu-docker-install.html
https://blog.csdn.net/yx_222/article/details/80936757
https://www.jianshu.com/p/10ed530766af

猜你喜欢

转载自blog.csdn.net/halazi100/article/details/105578048
今日推荐