上一章我们说了一下docker的基本操作,这章继续。docker ubuntu:16.04 镜像启动之后,当然是要装一些常用的工具!
root@6c306f61255e:~# apt-get update
发现速度好慢,怎么办?换源。vi vim 都没有,怎么更改/etc/apt/sources.list 文件?
root@6c306f61255e:~# vi
bash: vi: command not found
root@6c306f61255e:~# vim
bash: vim: command not found
在主机新建一个sources.list 文件添加新源信息、docker cp 进容器替换。
oly@ubuntu-desktop-amd64:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c306f61255e ubuntu:16.04 "/bin/bash" 2 hours ago Up 11 minutes oly-ubuntu
oly@ubuntu-desktop-amd64:~$ docker cp sources.list oly-ubuntu:/root
通过之前一系列操作,就可以创建一个能 运行目标程序 的容器。怎么把做好的容器拷贝、转移给目标机用?
创建新的镜像
一、docker commit 基于已有镜像的容器创建
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
主要参数选项包括:
- -a ,–author=”” 作者信息
- -m,–message=”” 提交信息
- -p,–pause=true 提交是暂停容器运行
在上面的容器中,我们更换了源、安装了vim。根据这个容器来提交一个新的镜像,提交时需要用到容器ID。
oly@ubuntu-desktop-amd64:~$ docker commit -m "add vim" -a "oly" 504798ba956a oly-ubuntu
sha256:d61fa3553d26c07192ceb7d8302750612bfdae23c9cb4a6c70212c313b337f33
oly@ubuntu-desktop-amd64:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oly-ubuntu latest d61fa3553d26 42 seconds ago 221MB
ubuntu 16.04 b0ef3016420a 13 days ago 117MB
保存镜像文件 docker save -o 目标文件(tar)REPOSITORY(源image)
oly@ubuntu-desktop-amd64:~$ docker save -o oly-docker-ubuntu.tgz oly-ubuntu
oly@ubuntu-desktop-amd64:~$ ls
c11-preference Desktop Documents Downloads examples.desktop Music oly-docker-ubuntu.tgz oly-ubuntu Pictures Public sources.list Templates Videos
因为是在本机测试,需要先删除已有的ubuntu镜像。
oly@ubuntu-desktop-amd64:~$ docker rmi oly-ubuntu:latest
Error response from daemon: conflict: unable to remove repository reference ......
删除已创建的容器
oly@ubuntu-desktop-amd64:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c306f61255e ubuntu:16.04 "/bin/bash" 2 hours ago Exited (0) 2 minutes ago oly-ubuntu
oly@ubuntu-desktop-amd64:~$ docker rm oly-ubuntu
oly-ubuntu
oly@ubuntu-desktop-amd64:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
oly@ubuntu-desktop-amd64:~$ docker rmi oly-ubuntu:latest
Untagged: oly-ubuntu:latest
Deleted: sha256:d61fa3553d26c07192ceb7d8302750612bfdae23c9cb4a6c70212c313b337f33
Deleted: sha256:330fe04e9d125324c967d273f0fb7f90724279931ee5d532ba213fb071589d5f
导入镜像文件:docker load --input file 或 docker load < file
oly@ubuntu-desktop-amd64:~$ docker load --input oly-docker-ubuntu.tgz
3369a6550264: Loading layer [==================================================>] 106.2MB/106.2MB
Loaded image: oly-ubuntu:latest
oly@ubuntu-desktop-amd64:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oly-ubuntu latest d61fa3553d26 7 minutes ago 221MB
ubuntu 16.04 b0ef3016420a 13 days ago 117MB
oly@ubuntu-desktop-amd64:~$ docker run --name oly-ubuntu -ti oly-ubuntu:latest
更新的sources.list 和vim都在。No problem!
二、Dockerfile创建新镜像
创建新文件夹oly-ubuntu
oly@ubuntu-desktop-amd64:~/oly-ubuntu$ ls
Dockerfile sources.list
新建Dockerfile文件内容如下
#this is a comment
# 基础镜像
FROM ubuntu:18.04
# 作者信息
MAINTAINER oly <wanguandong@gamil.com>
# 复制本地文件到镜像
ADD sources.list /etc/apt/
# RUN 会在创建中运行的指令
RUN apt-get update
RUN apt-get -y install vim
RUN apt-get -y install ssh
docker build
oly@ubuntu-desktop-amd64:~/oly-ubuntu$ docker build -t="tmp/ubuntu:v1" .
Successfully built 8c1dca0ea68a 镜像id
Successfully tagged tmp/ubuntu:v1
Removing intermediate container 155d840bf638
---> 8c1dca0ea68a
Successfully built 8c1dca0ea68a
Successfully tagged tmp/ubuntu:v1
oly@ubuntu-desktop-amd64:~/oly-ubuntu$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef23ac807a40 3a475e885fca "/bin/sh -c 'apt-get…" 8 minutes ago Exited (1) 8 minutes ago sleepy_mestorf
ae63d40b73b2 oly-ubuntu:latest "/bin/bash" 23 minutes ago Exited (127) 16 minutes ago oly-ubuntu
oly@ubuntu-desktop-amd64:~/oly-ubuntu$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tmp/ubuntu v1 8c1dca0ea68a 7 minutes ago 223MB
oly-ubuntu latest d61fa3553d26 32 minutes ago 221MB
ubuntu 16.04 b0ef3016420a 13 days ago 117MB
ubuntu 18.04 1d9c17228a9e 13 days ago 86.7MB
保存镜像文件 docker save -o 目标文件(tar)REPOSITORY(源image)