安装Docker环境

  • 本博客采用Ubuntu(64-bit)系统完成
  • 按照Docker官网提示,完成如下操作
  1. 输入apt-get remove docker docker-engine containerd runc指令,确认无旧版本docker
  2. 容器化 py 容器化sdk测试_Docker


  3. 输入apt-get update更新apt


容器化 py 容器化sdk测试_容器化 py_02


  1. 输入apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common安装包以通过HTTPS访问dockerHub仓库


容器化 py 容器化sdk测试_docker_03



  1. 输入curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -添加DockerGPG key,并通过apt-key fingerprint 0EBFCD88指令确认是否添加成功,输出如下图二红框所示即为成功。

容器化 py 容器化sdk测试_ubuntu_04



容器化 py 容器化sdk测试_容器化 py_05



  1. 输入add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"安装仓库信息为安装镜像作准备


容器化 py 容器化sdk测试_Docker_06



  1. 上述准备操作完成后,输入指令apt-get install docker-ce docker-ce-cli containerd.io安装最新版的Docker容器化引擎,过程等待时间可能稍长


容器化 py 容器化sdk测试_ubuntu_07



  1. 调用docker version指令,输出结果如下,表示Docker安装成功


容器化 py 容器化sdk测试_Docker_08


  1. 调用DockerHub上自带的hello-world镜像,通过指令sudo docker run hello-world,输出结果如下图所示即可开始Docker的正式使用


容器化 py 容器化sdk测试_docker_09


Docker简单操作

  • 输入指令docker run -it ubuntu bash安装镜像并执行,此时会进入类Ubuntu虚拟机的操作界面下,输入指令ls能查看当前镜像路径下的文件,示意图如下:


容器化 py 容器化sdk测试_Docker_10


  • Docker调用镜像时,当镜像位于本地库内则直接调用,否则会从DockerHub上加载相应镜像到本地镜像库,通过docker images可以查看本地镜像库内容


容器化 py 容器化sdk测试_容器化 py_11



  • 通过ps指令显示容器属性,按照容器的NAMES属性可以调用docker restart DOCKER-NAME启动容器,但此时需要通过attach指令进入容器


容器化 py 容器化sdk测试_容器化 py_12



  • 可以调用pull指令主动从DockerHub上拉取镜像,如:


容器化 py 容器化sdk测试_容器化 py_13



  • 通过建立dockerfile并设置相应的docker所需信息,即可调用build指令构建镜像
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
  • 以上述配置调用docker build . -t hello创建命名为hello的镜像


容器化 py 容器化sdk测试_docker_14



  • 通过docker run -it --rm hello -H指令运行该镜像,输出结果如下:


容器化 py 容器化sdk测试_Docker_15



  • 通过指令docker pull mysql:5.7获取MySQL镜像后,调用指令sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_PASSWORD=root -d mysql:5.7启动镜像并通过docker run -it --net host mysql:5.7 "sh"启动客户端,输入数据库指令即可进入MySQL操作界面


容器化 py 容器化sdk测试_容器化 py_16



  • 启动ubuntu镜像,安装必要的指令,调用ifconfig查看当前docker内的ip信息,即如下图所示:


容器化 py 容器化sdk测试_Docker_17


  • 退出ubuntu镜像,在主机上再次输入ifconfig查看网络信息,输入结果如下。通过对比发现,docker下的镜像与主机采用同一网关且对局域网ip地址进行了相应的修改,如主机的172.17.0.1而镜像上显示172.17.0.2


容器化 py 容器化sdk测试_docker_18


  • 通过docker info查看docker状态

容器化 py 容器化sdk测试_docker_19



  • 通过docker logs CONTAINER_ID查看对应镜像ID的输出日志,以hello-world为例,输出结果如下所示


容器化 py 容器化sdk测试_docker_20



小结

使用docker之前,对相应的概念有了一定的了解,依我看来,docker相当于通过linux系统分配资源后,内部有一定的操作,而操作的具体内容便是镜像对应的功能,调用镜像即为在其内搭建了一定的环境以供用户使用,相当于没有完整操作系统的虚拟机,可以适配多种系统/模式下的需求,而且由于是沙箱模式,对主机不会产生过大的影响。后续的使用按照教程去逐步尝试,发现操作并不难,相对而言是用户友好的容器引擎,使用十分方便。