Docker-制作镜像-基于容器制作镜像

镜像的生成途径

1、基于容器制作
2、dockerfile,docker bulid

基于容器制作镜像

docker commit
格式:
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Options 参数
-a,作者
-c,修改Dockerfile指令应用于创建的镜像
-m,提交消息
-p,在提交期间暂停容器(默认为true)

启动docker服务
[root@KVM02 ~]# systemctl daemon-reload 
[root@KVM02 ~]# systemctl restart docker

运行容器
[root@KVM02 ~]# docker run -it --name b1 busybox /bin/sh
/ # mkdir /data/html
/ # ls /data/
html
/ # echo xx > /data/html/index.html
/ # cat /data/html/index.html 
xx

将当前的容器制作成镜像
[root@KVM02 ~]# docker commit -a 'xx01<[email protected]>' -m 'first commit' b1 xx01/httpd:v1

查看制作的镜像
[root@KVM02 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
xx01/httpd          v1                  b5fced4e80ff        7 seconds ago       1.23MB
基于新的镜像运行一个容器,验证是否是基于b1创建成功的
[root@KVM02 ~]# docker run --rm -it xx01/httpd:v1  /bin/sh
/ # cat /data/html/index.html 
xx

基于容器b1创建新的镜像,并修改执行命令CMD
[root@KVM02 ~]# docker commit -a 'xx01<[email protected]>' -m 'first commit' -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' b1 xx01/httpd:v2
注解:busybox 中httpd 语法
-f:不运行为守护进程,在前台运行
-h:指定httpd运行的主目录

[root@KVM02 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
xx01/httpd          v2                  d87e2bf8788c        4 seconds ago       1.23MB

将宿主机的端口与容器的80端口进行映射,实现外部访问容器的信息
[root@KVM02 ~]# docker run -d --name b2 -p 8888:80 xx01/httpd:v2

访问成果
[root@KVM02 ~]# curl 192.168.16.44:8888
xx

Ubuntu添加openssh服务制作镜像

1、运行Ubuntu原有镜像
[root@KVM02 ~]# docker run -it --name b1 ubuntu:16.04 /bin/sh
# apt-get update   #对 apt-get进行更新
#apt-get install openssh-server   #下载openssh服务软件
# /etc/init.d/ssh start     #启动服务
 * Starting OpenBSD Secure Shell server sshd                                                           [ OK ]

基于centos:6制作含有lamp的镜像

[root@KVM02 ~]# docker run -it --name centos6 centos:6 /bin/bash
[root@bac4960e9730 /]# yum install httpd mysql php php-mysql php-gd -y
[root@KVM02 ~]# docker commit centos6 xx01/centos_lamp:v1
[root@KVM02 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
xx01/centos_lamp    v1                  709b03333c73        About a minute ago   405MB
[root@KVM02 ~]# docker run --name centos_lamp -v /tools:/tmp -d xx01/centos_lamp:v1

基于wordpress包制作一个镜像,创建一个网站

运行容器
[root@KVM02 ~]# docker run --name wordpress -v /tools:/opt/ -it -p 8800:80 xx01/centos_lamp:v1

宿主机上安装wordpress包
[root@KVM02 ~]# yum install wordpress

将下载的wordpress包cp到与容器关联的目录中
[root@KVM02 ~]# cp -r /usr/share/wordpress/ /tools

进入容器启动相应的服务
[root@9178467a68ff /]# yum install mysql-server
[root@a36593bb3772 /]# /etc/init.d/mysqld start
Starting mysqld:                                           [  OK  ]
[root@46e86ddab246 /]# service httpd start

开机自启动
[root@46e86ddab246 /]# chkconfig mysqld on
[root@46e86ddab246 /]# chkconfig httpd on

将容器与宿主机关联的目录下的wordpress cp/var/www/html目录下
[root@a36593bb3772 /]# cp -r  /opt/wordpress /var/www/html/
[root@a36593bb3772 /]# ls /var/www/html/
wordpress

进入数据库,初始化数据
[root@46e86ddab246 /]# mysql
mysql> create  database wordpress character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on wordpress.* to wordpress@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql>\q

进入到/var/www/html/wordpress/目录下编译we-config.php,可参考wp-config-sample.php文件
[root@a36593bb3772 /]#cd /var/www/html/wordpress/
[root@46e86ddab246 wordpress]# cp wp-config-sample.php  wp-config.text
[root@46e86ddab246 wordpress]# vi wp-config.php

启动http服务
[root@46e86ddab246 wordpress]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2 for ServerName
                                                           [  OK  ]

将当前的容器制作成新的镜像
[root@KVM02 tools]# docker commit wordpress wordpress:v1
[root@KVM02 tools]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wordpress           v1                  11cbb81265fc        18 seconds ago      602MB

基于新的镜像启容器并开启相应的服务
[root@KVM02 ~]# docker run -it --name wordpress -p 8000:80 wordpress:v1 /bin/bash
[root@29e39d32553b /]#  service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2 for ServerName
                                                           [  OK  ]
[root@29e39d32553b /]#  service mysqld start
Starting mysqld:                                           [  OK  ]

wp-config.php 文件中修改的部分:
在这里插入图片描述
根据宿主机IP地址的8000端口进行访问:192.168.16.44:8000/wordpress
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

给镜像打标签
[root@KVM02 ~]# docker tag wordpress:v3 xxvv01/xx:wordpress
上传镜像
[root@KVM02 ~]# docker push xxvv01/xx:wordpress 

使用link方式使容器间可以互相通信

1、docker run --link的作用
docker run --link 可以用来链接两个容器,使得容器之间可以相互通信,并且接收容器可以获取源容器的一些数据。如源容器的环境变量。
–link的格式:
–link :alias 其中,name和id是源容器的name和id,alias是源容器在link下的别名。

2. --link下容器间的通信
源容器和接收容器之间传递数据是通过以下2种方式:
(1)设置环境变量
(2)更新/etc/hosts文件

1> 设置环境变量	
当使用--link时,docker会自动在接收容器内创建基于--link参数的环境变量:
docker会在接收容器中设置名为<alias>_NAME的环境变量,该环境变量的值为:
<alias>_NAME=/接收容器名/源容器alias

接收容器还会获取源容器暴露的环境变量,这些变量包括:
源容器Dockerfile中ENV标签设置的环境变量
源容器用docker run命令创建,命令中包含的 -e或--env或--env-file设置的环境变量
2> 更新/etc/hosts文件
	docker会将源容器的hosts更新到目标容器的/etc/hosts中

使用mysql:5.6和wordpress镜像,构建网站。

[root@KVM02 ~]# docker pull mysql:5.6
[root@KVM02 ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:5.6 
[root@KVM02 ~]# docker exec -it mysql /bin/sh
# mysql -uroot -p
Enter password: 
[root@KVM02 ~]# docker  pull wordpress

[root@KVM02 ~]# docker run --name wp -p 8000:80 --link mysql:mysql -d --restart=always wordpress

在这里插入图片描述
在这里插入图片描述

使用mysql:5.6和owncloud镜像,构建网盘。

[root@KVM02 ~]# docker pull mysql:5.6
[root@KVM02 ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:5.6 

[root@KVM02 ~]# docker  pull  owncloud
[root@KVM02 ~]# docker run --name wp -p 80:80 --link mysql:mysql -d --restart=always owncloud

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46289868/article/details/109394224
今日推荐