Docker 实战记录:通过容器创建镜像及镜像的移植与使用

实战思路

  1. windows下使用buzybox镜像创建容器,并使用数据卷共享数据
  2. 后台方式启动容器,随后使用exec进入容器并创建新文件
  3. 退出容器,使用容器创建新镜像、导出新镜像用于移植
  4. 在ubuntu系统下导入并使用新镜像,创建容器
  5. 验证:镜像移植可以保留容器中创建的文件;源容器已绑定数据卷在镜像移植后创建新容器时不会产生路径异常问题

实战过程

  • windows
    • 交互式创建并使用容器(启动并进入,退出后容器停止):docker run -it -v f:\mydocker\data:/mydata busybox
    • 通过容器创建镜像:docker commit 59a66b3a2f54 chengzy_busybox:v1
    • 导出镜像:docker save -o f:\mydocker\chengzy_busybox.tar chengzy_busybox
    • 启动容器:docker start 59a66b3a2f54
    • 进入容器:docker exec -it 59a66b3a2f54 sh
    • 查看正在运行的容器:docker ps
    • 查看所有容器:docker ps -a
    • 查看所有镜像:docker images
C:\Users\chengzy>docker run -it -v f:\mydocker\data:/mydata busybox
/ # ls
bin     dev     etc     home    mydata  proc    root    sys     tmp     usr     var
/ # cd mydata/
/mydata # ls
/mydata # touch hello.py
/mydata # ls
hello.py
/mydata # exit

C:\Users\chengzy>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3f4abb4425f9        busybox             "sh"                31 minutes ago      Up 29 minutes                           wonderful_shockley

C:\Users\chengzy>docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                           PORTS               NAMES
59a66b3a2f54        busybox             "sh"                     About a minute ago   Exited (0) 52 seconds ago                            optimistic_proskuriakova
e0147b9f91c7        busybox             "sh"                     31 minutes ago       Exited (0) 31 minutes ago                            practical_bhaskara
3f4abb4425f9        busybox             "sh"                     32 minutes ago       Up 30 minutes                                        wonderful_shockley
c0f6ca3bf438        delron/fastdfs      "/usr/bin/start1.sh …"   2 days ago           Exited (255) About an hour ago                       tracker
6c3ea3987ec9        delron/fastdfs      "/usr/bin/start1.sh …"   2 days ago           Exited (255) About an hour ago                       storage

C:\Users\chengzy>docker commit 59a66b3a2f54 chengzy_busybox:v1
sha256:c09e4cea1ce49e3265a5b98b7844351f0d8dd620fd30428dedda9727dd17eda5

C:\Users\chengzy>docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
chengzy_busybox            v1                  c09e4cea1ce4        6 seconds ago       1.22MB
busybox                    latest              db8ee88ad75f        2 days ago          1.22MB
ubuntu                     16.04               13c9f1285025        4 weeks ago         119MB
ubuntu                     18.04               4c108a37151f        4 weeks ago         64.2MB
ubuntu                     latest              4c108a37151f        4 weeks ago         64.2MB
docker4w/nsenter-dockerd   latest              2f1c802f322f        9 months ago        187kB
delron/fastdfs             latest              8487e86fc6ee        14 months ago       464MB

C:\Users\chengzy>docker save -o f:\mydocker\chengzy_busybox.tar chengzy_busybox





C:\Users\chengzy>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3f4abb4425f9        busybox             "sh"                37 minutes ago      Up 35 minutes                           wonderful_shockley

C:\Users\chengzy>docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
59a66b3a2f54        busybox             "sh"                     5 minutes ago       Exited (0) 5 minutes ago                             optimistic_proskuriakova
e0147b9f91c7        busybox             "sh"                     35 minutes ago      Exited (0) 35 minutes ago                            practical_bhaskara
3f4abb4425f9        busybox             "sh"                     37 minutes ago      Up 35 minutes                                        wonderful_shockley
c0f6ca3bf438        delron/fastdfs      "/usr/bin/start1.sh …"   2 days ago          Exited (255) About an hour ago                       tracker
6c3ea3987ec9        delron/fastdfs      "/usr/bin/start1.sh …"   2 days ago          Exited (255) About an hour ago                       storage

C:\Users\chengzy>docker start 59a66b3a2f54
59a66b3a2f54

C:\Users\chengzy>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
59a66b3a2f54        busybox             "sh"                6 minutes ago       Up 2 seconds                            optimistic_proskuriakova
3f4abb4425f9        busybox             "sh"                37 minutes ago      Up 35 minutes                           wonderful_shockley

C:\Users\chengzy>docker exec -it 59a66b3a2f54 sh
/ # ls
bin     dev     etc     home    mydata  proc    root    sys     tmp     usr     var
/ # ls mydata/
hello.py
/ # cd home/
/home # ls
/home # touch chengzy.txt
/home # ls
chengzy.txt
/home # vi chengzy.txt
/home # cat chengzy.txt



hello chengzy  hello buzybox
/home # exit

C:\Users\chengzy>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
59a66b3a2f54        busybox             "sh"                8 minutes ago       Up 2 minutes                            optimistic_proskuriakova
3f4abb4425f9        busybox             "sh"                40 minutes ago      Up 38 minutes                           wonderful_shockley

C:\Users\chengzy>docker commit 59a66b3a2f54 chengzy_busybox:v2
sha256:afbf1902dbbbc4355785d190729f41d505bb4920cd3d7be61fd2167c314cd137

C:\Users\chengzy>docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
chengzy_busybox            v2                  afbf1902dbbb        6 seconds ago       1.22MB
chengzy_busybox            v1                  c09e4cea1ce4        7 minutes ago       1.22MB
busybox                    latest              db8ee88ad75f        2 days ago          1.22MB
ubuntu                     16.04               13c9f1285025        4 weeks ago         119MB
ubuntu                     18.04               4c108a37151f        4 weeks ago         64.2MB
ubuntu                     latest              4c108a37151f        4 weeks ago         64.2MB
docker4w/nsenter-dockerd   latest              2f1c802f322f        9 months ago        187kB
delron/fastdfs             latest              8487e86fc6ee        14 months ago       464MB

C:\Users\chengzy>docker save -o f:\mydocker\chengzy_buzybox_v2_addfile.tar chengzy_busybox:v2
  • ubuntu 1804
    • 导入镜像:sudo docker load --input chengzy_buzybox_v2_addfile.tar
    • 创建容器并后台启动: docker run -itd -v /home/briup/Docker/mydata/:/mydata chengzy_busybox:v2
    • 进入容器:docker exec -it 5d71d9a5fff4 sh
    • 退出容器:exit
briup@briup-Macmini:~$ sudo docker load --input chengzy_buzybox_v2_addfile.tar 
briup@briup-Macmini:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
chengzy_busybox     v2                  afbf1902dbbb        2 hours ago         1.22MB

briup@briup-Macmini:~$ clear
briup@briup-Macmini:~$ docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
briup@briup-Macmini:~$ docker run -itd -v /home/briup/Docker/mydata/:/mydata chengzy_busybox:v2
5d71d9a5fff45b289613565e81e47b5c03738f547ff26427aa06fe00676d4872
briup@briup-Macmini:~$ docker ps
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS               NAMES
5d71d9a5fff4        chengzy_busybox:v2   "sh"                7 seconds ago       Up 4 seconds                            infallible_shockley
briup@briup-Macmini:~$ docker exec -it 5d71d9a5fff4 sh
/ # ls
bin     dev     etc     home    mydata  proc    root    sys     tmp     usr     var
/ # cd mydata/
/mydata # ls
/mydata # touch test.txt
/mydata # cat > test.txt 
hello world
hello buzy^H^H^H

^C
/mydata # cat test.txt 
hello world
hello buzy

/mydata # exit
briup@briup-Macmini:~$ cat /home/briup/Docker/mydata/
cat: /home/briup/Docker/mydata/: 是一个目录
briup@briup-Macmini:~$ cat /home/briup/Docker/mydata/test.txt 
hello world
hello buzy

briup@briup-Macmini:~$ 

你可能感兴趣的:(docker)