第七篇:Docker镜像操作
2018-02-06 21:47
176 查看
运行容器时,当本地不存在镜像时,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
a.从已有创建的容器镜像更新
b.根据自身需求编写dockerfile创建新镜像
更新镜像前,先使用该镜像创建一个容器
进入镜像使用apt-get update 命令更新
-m:提交的描述信息
-a:指定镜像作者
7e0559072ced:容器的ID
liu/ubuntu:v2指定要创建的目标镜像名
使用docker images查看提交的新镜像
使用新镜像启动一个容器
在编写Dockerfile文件时,每一个指令都会在镜像上创建一个新的层,并且每一条指令首字母必须是大写
然后,使用编写的Dockerfile文件,通过docker build命令来构建一个镜像
. 表示Dokerfile文件在当前目录,也可以指定Dockerfile的绝对路径
使用Dockerfile文件创建的镜像来运行容器
1.列出本地镜像
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest 2e202f453940 11 days ago 179MB nginx latest 3f8a4339aadd 5 weeks ago 108MB hello-world latest f2a91732366c 2 months ago 1.85kB training/webapp latest 6fae60ef3446 2 years ago 349MB
参数说明:
REPOSITORY:表示镜像的仓库源TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
2.使用镜像运行容器
[root@docker ~]# docker run -ti httpd /bin/bash root@dd34d7458e86:/usr/local/apache2# ls bin build cgi-bin conf error htdocs icons include logs modules root@dd34d7458e86:/usr/local/apache2#
3.拉取新镜像
如果本地不存在使用的镜像,Docker就会自动到镜像仓库去下载镜像,使用docker pull[root@docker ~]# docker pull ubuntu:16.04 ##下载指定版本镜像 16.04: Pulling from library/ubuntu 1be7f2b886e8: Pull complete 6fbc4a21b806: Pull complete c71a6f8e1378: Pull complete 4be3072e5a37: Pull complete 06c6d2f59700: Pull complete Digest: sha256:2b80e7fbfd1b0a3784dd0e55fb6f2750ebc33e596c2ccee5201ecf018ac5ae05 Status: Downloaded newer image for ubuntu:16.04
4.搜索镜像
可以通过docker search 命令搜索需要使用的镜像[root@docker ~]# docker search httpd NAME DESCRIPTION STARS OFFICIAL AUTOMATED httpd The Apache HTTP Server Project 1490 [OK] hypriot/rpi-busybox-httpd Raspberry Pi compatible Docker Image with a … 40 centos/httpd 15 [OK] centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or bui… 8 armhf/httpd The Apache HTTP Server Project 8 macadmins/netboot-httpd use in combination with bruienne/bsdpy 4 [OK] salim1983hoop/httpd24 Dockerfile running apache config 2 [OK] lolhens/httpd Apache httpd 2 Server 2 [OK] rgielen/httpd-image-php5 Docker image for Apache httpd with PHP 5 bas… 1 [OK] rgielen/httpd-image-simple Docker image for simple Apache httpd based o… 1 [OK] lead4good/httpd-fpm httpd server which connects via fcgi proxy h… 1 [OK] fboaventura/dckr-httpd Small footprint http server to use with othe… 1 [OK] epflidevelop/os-wp-httpd WP httpd 1 [OK] publici/httpd httpd:latest 0 [OK] tplatform/aws-linux-httpd24-php70 aws-linux-httpd24-php70 0 [OK] dockerpinata/httpd 0
5.创建镜像
在生产环境上,一般情况下,docker镜像需要自身业务来定制,可通过两种方式来实现docker镜像的定制化a.从已有创建的容器镜像更新
b.根据自身需求编写dockerfile创建新镜像
更新镜像前,先使用该镜像创建一个容器
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest 2e202f453940 11 days ago 179MB ubuntu 16.04 0458a4468cbc 11 days ago 112MB nginx latest 3f8a4339aadd 5 weeks ago 108MB hello-world latest f2a91732366c 2 months ago 1.85kB training/webapp latest 6fae60ef3446 2 years ago 349MB [root@docker ~]# docker run -ti ubuntu:16.04 /bin/bash root@7e0559072ced:/#
进入镜像使用apt-get update 命令更新
[root@docker ~]# docker exec -ti 7e0559072ced bash root@7e0559072ced:/# apt-get update Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB] Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB] Get:3 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [58.3 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB] Get:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [553 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB] Get:8 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.7 kB] Get:9 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [253 kB] Get:10 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [3486 B] Get:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/universe Sources [239 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [922 kB] Get:17 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [13.1 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [747 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [18.5 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [5162 B] Get:21 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [7179 B] Fetched 24.8 MB in 32s (772 kB/s) Reading package lists... Done
root@7e0559072ced:/# exit exit [root@docker ~]# docker ps |grep ubuntu 7e0559072ced ubuntu:16.04 "/bin/bash" 9 hours ago Up 9 hours naughty_jennings
说明:
此时ubuntu的容器ID:7e0559072ced,可以通过docker commit来提交容器副本[root@docker ~]# docker commit -m="has update" -a="liu" 7e0559072ced liu/ubuntu:v2 sha256:15caed78232629df1ec5cd077d38215271bc413d12bc1500dc52cb3bc3e12c75
-m:提交的描述信息
-a:指定镜像作者
7e0559072ced:容器的ID
liu/ubuntu:v2指定要创建的目标镜像名
使用docker images查看提交的新镜像
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE liu/ubuntu v2 15caed782326 2 minutes ago 151MB ####提交的新镜像 httpd latest 2e202f453940 11 days ago 179MB ubuntu 16.04 0458a4468cbc 12 days ago 112MB nginx latest 3f8a4339aadd 6 weeks ago 108MB hello-world latest f2a91732366c 2 months ago 1.85kB training/webapp latest 6fae60ef3446 2 years ago 349MB
使用新镜像启动一个容器
[root@docker ~]# docker run -ti liu/ubuntu:v2 /bin/bash root@60e40fc5e5d8:/#
6.构建镜像
使用docker build 从零开始构建一个新的镜像,需要编写Dockerfile容器文件,如[root@docker ~]# vim Dockerfile FROM centos:6.7 ##指定使用哪个镜像源 MAINTAINER Fisher "fisher@sudops.com" ##RUN告诉docker需要在镜像内执行哪些命令 RUN /bin/echo 'root:123456' |chpasswd RUN useradd liulei RUN /bin/echo 'liulei:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D ~ ~
在编写Dockerfile文件时,每一个指令都会在镜像上创建一个新的层,并且每一条指令首字母必须是大写
然后,使用编写的Dockerfile文件,通过docker build命令来构建一个镜像
[root@docker ~]# docker build -t liulei/centos:6.7 . ERRO[0000] Can't add file /root/.gnupg/S.gpg-agent to tar: archive/tar: sockets not supported Sending build context to Docker daemon 779.4MB Step 1/9 : FROM centos:6.7 6.7: Pulling from library/centos cbddbc0189a0: Pull complete Digest: sha256:7248c96de4648749c7936f203d983530e7ebdd83c3db6d47278392f18bcd7baf Status: Downloaded newer image for centos:6.7 ---> 000c5746fa52 Step 2/9 : MAINTAINER Fisher "fisher@sudops.com" ---> Running in 7de81283b6be Removing intermediate container 7de81283b6be ---> 00e92f10a010 Step 3/9 : RUN /bin/echo 'root:123456' |chpasswd ---> Running in e2265b58e93b Removing intermediate container e2265b58e93b ---> 0bd4ee58d0e3 Step 4/9 : RUN useradd liulei ---> Running in 846595d00078 Removing intermediate container 846595d00078 ---> 600139a37c32 Step 5/9 : RUN /bin/echo 'liulei:123456' |chpasswd ---> Running in 236b3202305b Removing intermediate container 236b3202305b ---> 984723c05b0f Step 6/9 : RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local ---> Running in c18bf04cfb8c Removing intermediate container c18bf04cfb8c ---> 65c9fe71b1f9 Step 7/9 : EXPOSE 22 ---> Running in 93f0491bde21 Removing intermediate container 93f0491bde21 ---> 14ee40f132fc Step 8/9 : EXPOSE 80 ---> Running in 5be75fdead2e Removing intermediate container 5be75fdead2e ---> f380dde783ad Step 9/9 : CMD /usr/sbin/sshd -D ---> Running in cf4e114e9953 Removing intermediate container cf4e114e9953 ---> dc64de0c25c4 Successfully built dc64de0c25c4 Successfully tagged liulei/centos:6.7 [root@docker ~]#
参数说明
-t 表示指定要创建的目标镜像名. 表示Dokerfile文件在当前目录,也可以指定Dockerfile的绝对路径
使用docker images 查看通过dockerfile文件创建的镜像是否存在
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE liulei/centos 6.7 dc64de0c25c4 6 minutes ago 191MB ##使用Dockerfile创建的镜像 liu/ubuntu v2 15caed782326 21 minutes ago 151MB httpd latest 2e202f453940 11 days ago 179MB ubuntu 16.04 0458a4468cbc 12 days ago 112MB nginx latest 3f8a4339aadd 6 weeks ago 108MB hello-world latest f2a91732366c 2 months ago 1.85kB centos 6.7 000c5746fa52 3 months ago 191MB training/webapp latest 6fae60ef3446 2 years ago 349MB
使用Dockerfile文件创建的镜像来运行容器
[root@docker ~]# docker run -ti dc64de0c25c4 /bin/bash [root@c12f3fe4ea60 /]#
7.设置镜像标签
使用docker tag 命令为镜像设置标签[root@docker ~]# docker tag dc64de0c25c4 liulei/centos:new [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE liulei/centos 6.7 dc64de0c25c4 13 minutes ago 191MB liulei/centos new dc64de0c25c4 13 minutes ago 191MB liu/ubuntu v2 15caed782326 28 minutes ago 151MB httpd latest 2e202f453940 11 days ago 179MB ubuntu 16.04 0458a4468cbc 12 days ago 112MB nginx latest 3f8a4339aadd 6 weeks ago 108MB hello-world latest f2a91732366c 2 months ago 1.85kB centos 6.7 000c5746fa52 3 months ago 191MB training/webapp latest 6fae60ef3446 2 years ago 349MB
相关文章推荐
- Docker快速上手系列(1):镜像的概念及相关操作
- Docker入门实战(二)——Docker镜像操作
- docker镜像基本操作
- Docker-1.相关知识+安装+镜像相关操作
- 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作
- docker镜像操作
- docker常用命令总结之安装、镜像、容器基本操作
- 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作
- Docker系列(二)镜像下载、操作容器、镜像导入导出等操作
- docker学习笔记3:镜像操作(查找和下载)
- 【Docker】Docker入门操作容器和镜像
- 使用docker镜像运行一个容器的操作…
- Docker:镜像操作和容器操作
- Docker 镜像基本操作
- docker实战之centos6.5上安装、镜像、容器相关操作
- 【二十】Docker-镜像操作
- docker镜像基本操作
- pycharm使用docker镜像的python解释器,pycahrm可视化操作和管理dcoker
- Docker学习笔记(2)-docker镜像操作
- 【Docker】镜像基本操作