docker入门实践,制作Dockerfile镜像

目前我知道的自制镜像有2种方式,根据容器制作镜像和根据Dockerfile制作镜像。

根据现成的容器制作镜像

适用于已经有一个现成的容器已经满足需求的情况

% docker ps -a
CONTAINER ID        IMAGE                                                      COMMAND                  CREATED             STATUS                      PORTS                               NAMES
ccc3b12075a6        ubuntu:16.04                                               "/bin/bash"              10 minutes ago      Up 10 minutes                                                   ubuntu1604

% docker image ls
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
ubuntu                                     16.04               005d2078bdfa        2 weeks ago         125MB

% docker commit ccc3b12075a6 lzcubuntu1604:0.1
sha256:bb5a17051a6c574062299f0e9a422f5d7bdcdaa8c431ce6d816877253552cc71

% docker image ls
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
lzcubuntu1604                              0.1                 bb5a17051a6c        4 seconds ago       288MB
ubuntu                                     16.04               005d2078bdfa        2 weeks ago         125MB

% docker run -itd --name lzcubuntu1604  -v /Users/mac/work:/root/work  lzcubuntu1604:0.1
fb280dfd3c4c522e511212b491f2add7d2e8924b0cbb04a43580ca73a2870729

% docker ps -a
CONTAINER ID        IMAGE                                                      COMMAND                  CREATED             STATUS                      PORTS                               NAMES
fb280dfd3c4c        lzcubuntu1604:0.1                                          "/bin/bash"              5 seconds ago       Up 4 seconds                                                    lzcubuntu1604
ccc3b12075a6        ubuntu:16.04                                               "/bin/bash"              15 minutes ago      Up 15 minutes                                                   ubuntu1604

% docker exec -it lzcubuntu1604 bash

实际案例
https://blog.csdn.net/hl_java/article/details/83721183?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158933777619725222434861%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=158933777619725222434861&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_v25-2-83721183.nonecase&utm_term=docker

根据Dockerfile制作镜像

适用于基于某个基线版本来制作镜像的情况

% vi ~/work/docker/lzcubuntu/Dockerfile
# base image
FROM ubuntu:16.04

# MAINTAINER
MAINTAINER lzc.java@icloud.com

# RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
#    echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \
#    echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
#    echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \
#    echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list


RUN apt-get update 
RUN  apt-get install vim -y && apt-get install g++ -y

RUN echo 'alias psl="ps -eo user,pid,%cpu,%mem,vsz,rss,tty,stat,lstart,etime,command --sort=%cpu |grep java"' >> ~/.bashrc
RUN echo 'alias g++="g++ -std=c++14"' >> ~/.bashrc
RUN echo 'echo "home path is ~"' >> ~/.bashrc
RUN echo 'cd ~' >> ~/.bashrc


% docker build -t lzcubuntu:v1 ~/work/docker/lzcubuntu

Sending build context to Docker daemon  2.048kB
Step 1/8 : FROM ubuntu:16.04
 ---> 005d2078bdfa
Step 2/8 : MAINTAINER lzc.java@icloud.com
 ---> Running in 002194b93593
Removing intermediate container 002194b93593
 ---> 457e6c4eaa32
Step 3/8 : RUN echo 'alias psl="ps -eo user,pid,%cpu,%mem,vsz,rss,tty,stat,lstart,etime,command --sort=%cpu |grep java"' >> ~/.bashrc
 ---> Running in 4cf699aec89a
Removing intermediate container 4cf699aec89a
 ---> 7b69bc414cf6
Step 4/8 : RUN echo 'alias g++="g++ -std=c++14"' >> ~/.bashrc
 ---> Running in da1fbaa4c919
Removing intermediate container da1fbaa4c919
 ---> 3d7dcded573a
Step 5/8 : RUN echo 'echo "home path is ~"' >> ~/.bashrc
 ---> Running in 8ab5a886c362
Removing intermediate container 8ab5a886c362
 ---> 3fdfc97ed09c
Step 6/8 : RUN echo 'cd ~' >> ~/.bashrc
 ---> Running in f34b9f8ff87a
Removing intermediate container f34b9f8ff87a
 ---> a39d09bb72ec
Step 7/8 : RUN apt-get update
 ---> Running in 235564d10a0e
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
Get:3 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [1103 kB]
Get:4 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.7 kB]
Get:5 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [626 kB]
Get:6 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [6677 B]
Get:7 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
Get:8 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
Get:9 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB]
Get:10 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB]
Get:11 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB]
Get:12 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB]
Get:13 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [1470 kB]
Get:14 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [13.1 kB]
Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [1030 kB]
Get:16 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [19.7 kB]
Get:17 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [7942 B]
Get:18 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [8807 B]
Fetched 16.4 MB in 1min 21s (203 kB/s)
Reading package lists...
Removing intermediate container 235564d10a0e
 ---> da8f992b18d9
Step 8/8 : RUN  apt-get install vim -y && apt-get install g++ -y
 ---> Running in f8197dddd867
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  file libexpat1 libgpm2 libmagic1 libmpdec2 libpython3.5 libpython3.5-minimal
  libpython3.5-stdlib libsqlite3-0 libssl1.0.0 mime-support vim-common
  vim-runtime
Suggested packages:
  gpm ctags vim-doc vim-scripts vim-gnome-py2 | vim-gtk-py2 | vim-gtk3-py2
  | vim-athena-py2 | vim-nox-py2
......
After this operation, 58.4 MB of additional disk space will be used.
Setting up g++ (4:5.3.1-1ubuntu1) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
Setting up manpages-dev (4.04-2) ...
Processing triggers for libc-bin (2.23-0ubuntu11) ...
Removing intermediate container f8197dddd867
 ---> a37345ce2d96
Successfully built a37345ce2d96
Successfully tagged lzcubuntu:v1

制作好镜像后,剩下的启动与进入容器跟之前的步骤是一致的

docker run -itd --name lzcubuntu1604v1  -v /Users/mac/work:/root/work  lzcubuntu:v1
docker exec -it lzcubuntu1604v1 bash

实际案例
https://blog.csdn.net/hl_java/article/details/86248095?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158933781219724846462901%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=158933781219724846462901&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_v25-1-86248095.nonecase&utm_term=dockerfile

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值