ITPub博客

首页 > 云计算 > > Docker 日常使用笔记

Docker 日常使用笔记

作者:浪花小雨滴 时间:2020-05-09 11:38:06 0 删除 编辑

从小白开始,在摸索实践的过程中有过不少困惑,蹚了许多坑, 更多的是惊喜。就像我同事说的,这只小鲸鱼还挺好玩。


学习资料

什么是Docker --- 这篇文章挺通俗易懂的,动手操作几次之后就能理解文中的内容。

慕课网:为什么需要Docker?​zhuanlan.zhihu.com图标

Docker入门操作 --- 个人推荐下面这篇文章,较为全面的覆盖了入门操作


笑虎:只要一小时,零基础入门Docker​zhuanlan.zhihu.com图标

Docker 官方手册 ---

| Docker Documentation​docs.docker.com图标

操作系统

下文的演示基于Mac系统

  • Mac High Sierra 10.13.6
  • Docker Version 18.03.1-ce-mac65

case 1: Dockerfile -> image -> container

内容: 从Dockerfile开始,建立一个image,然后启动一个container。

目的:在container里面安装Ubuntu系统,python3,以及pandas 0.24.2包。

步骤一:

命名工作文件夹‘case1’, 新建Dockerfile文件

Dockerfile文件本质上是一个txt文档,文件名严格是‘Dockerfile’, 文件内容如下。

  • 第一行命令指定操作系统
  • 第二行注释
  • 3-8行安装python3和pip3
  • 11行安装pandas 0.24.2
FROM ubuntu:18.04
# Install python3
RUN apt-get update \
  && apt-get install -y python3-pip\
                        python3\
  && cd /usr/local/bin \
  && ln -s -f /usr/bin/python3 python \
  && pip3 install --upgrade pip

# Install packages
RUN pip3 install pandas==0.24.2

更多Dockerfile命令(COPY, ADD, ENV, ENTRYPOINT ...)的官方手册:

| Docker Documentation​docs.docker.com图标

步骤二:

显示当前已经存在的image

>>> docker images

新建image, 命名为myimage, tag 是0.0

>>> docker build . -t myimage:0.0

确认 myimage:0.0 创建完毕

>>> docker images
myimage:0.0创建完毕

步骤三:

从刚新建的myimage:0.0 启动一个container,命名为mycontainer

>>> docker run -it --name mycontainer myimage:0.0
已经进入container环境

确认mycontainer里面 pandas 已经装好,而且版本是0.24.2

>>> python -c "import pandas; print(pandas._version__)"

步骤四:

退出mycontainer,并且保持mycontainer在后台运行

>>> ctrl+p   ctrl+q

确认mycontainer是active状态

>>> docker ps -a
mycontainer 的状态是up

重新进入mycontainer

>>> docker attach mycontainer
已经进入container环境

退出mycontainer, 并且停止运行

>>> exit

确认mycontainer停止运行

>>> docker ps -a
mycontainer的状态是exited

删除mycontainer

>>> docker rm mycontainer


case 2: docker run -v

内容:新建container, 命名为mycontainer_2,并且把本地文件夹mount到container里面。

目的:在case 1中,container和本地环境是隔离的,container看不到外面的内容,外面也看不到container的内容。在这个例子里,将本地文件夹case1加载到container里面,演示container在case1文件下做的任何操作都会同步保存到本地。

步骤一:

创新container,命名为mycontainer_2, 并且使用 -v 将case1文件夹mount到mycontainer_2的根目录下

>>> docker run -it --name mycontainer2 -v $pwd_to_case1:/case1 myimage:0.0

步骤二:

确认mycontainer_2的根目录下已经存在case1 文件夹

>>> ls

步骤三:

进入case1 文件夹, 确认存在Dockerfile文件,原因是本地该文件夹下的Dockerfile文件一并被同步mount到mycontainer_2

>>> cd case1
>>> ls

步骤四:

创建hello_world.txt文件

>>> echo "Hello world" >> hello_world.txt

步骤五:

退出mycontainer_2, 确认在本地hello_world.txt文件依然存在

>>> ctrl+p   ctrl+q
>>> ls
container里面创建的hello_world.txt文件在本地也被保存


更多关于docker run 的tag(-p, -d, --rm ...), 请参考官方手册:

| Docker Documentation​docs.docker.com图标

case 3: docker + bash

内容:使用bash script创建container,安装package。

目的:新建container, 命名为‘mycontainer_4’, 安装numpy 1.16.1.

步骤一:

新建bash脚本,命名为‘run_docker_container.sh’, 内容如下:

  • 第二行:创建mycontainer_4
  • 第五行:安装numpy 1.16.1
  • 第八行: 进入mycontainer_4
# run container
docker run -it --name mycontainer_3 -d myimage:0.0

# install numpy
docker exec -it mycontainer_3 pip install  numpy==1.16.1

# enter container
docker attach mycontainer_3



步骤二:

运行脚本

>>> bash run_docker_container.sh

步骤三:

确认numpy 1.16.1 安装成功

>>> python -c "import numpy; print(numpy._version_)"
运行bash脚本后自动进入mycontainer_4,确认numpy安装完成

case 4: docker + yml

内容:使用yml创建一个container
目的:yml是config file,通常用于构建网络。比如有多个container,互相通信。以下例子里,网络中只有一个container。


步骤一:

创建yml, 严格命名为‘docker-compose.yml’, 内容如下:

version: '3'
services:
  dev:
    image: myimage:0.0
    container_name: mycontainer_4
    volumes:
      - ../case4:/case4
    ports:
      - 8000:8000
    stdin_open: true
    tty: true

步骤二:

确认进入docker-compose.yml 所在文件夹

>>> ls

创建网络

>>> docker-compose up -d

步骤三:

进入container

>>> docker attach mycontainer_4

更多关于docker-compose的使用,参考官方手册:

Get started with Docker Compose​docs.docker.com图标


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3139527/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39945