拉取提交推送 Dockerfile WordPress环境 创造 新命令篇

让我们尝试安装Docker、拉取、提交、推送和从Dockerfile构建等一系列操作,以创建WordPress环境为目标。我们还添加了新的命令支持。

环境:在VirtualBox虚拟机上初始安装CentOS7,或在公共云上准备CentOS7实例。

事先创建好DockerHub账户吧。

安装Docker

1. 安装Docker

安装所需的软件包

# yum install -y yum-utils device-mapper-persistent-data lvm2

添加存储库

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装最新版的Docker

# yum install -y docker-ce

※这次我们将使用最新版本的Docker进行操作,但为了参考,我也会提供版本指定的安装方法。

如果需要指定版本

确认版本

# yum list docker-ce --showduplicates | sort -r
 * updates: ftpmirror.your.org
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
Installed Packages
 * extras: mirror.san.fastserv.com
 * epel: mirror.pnl.gov
docker-ce.x86_64            18.06.1.ce-3.el7                   docker-ce-stable 
docker-ce.x86_64            18.06.1.ce-3.el7                   @docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                   docker-ce-stable 
docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            18.03.0.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.12.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.03.2.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable 
 * base: mirrors.syringanetworks.net
Available Packages

指定版本的安装(例如docker-ce-17.06.0.ce-1.el7.centos)。

# yum install docker-ce-17.06.0.ce-1.el7.centos

2. Docker的自动启动设置和服务启动

# systemctl enable docker.service
# systemctl start docker.service

确认 Docker 的版本

# docker version

4.系统信息确认

# docker info

从Docker Hub上获取容器镜像。

1. 用search命令在注册表中进行搜索。

# docker search linaction
INDEX       NAME                         DESCRIPTION               STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/linaction/centos   Sample CentOS6.7(Final)   0

2. 下载容器镜像

# docker image pull -a linaction/centos
centos6: Pulling from docker.io/linaction/centos

47d44cb6f252: Already exists
6a7b54515901: Already exists
e788880c8cfa: Already exists
1debf8fb53e6: Already exists
72703a0520b7: Already exists
68833123ff9e: Already exists
ce76491a3be1: Already exists
Digest: sha256:759ea478951130a32e9191daaffc9b4e3c5ad089331eccc32112e370bf7c9fb8
Status: Image is up to date for docker.io/linaction/centos

3. 确认已下载的图像。 yǐ de

# docker image ls
REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/linaction/centos   centos6             ce76491a3be1        About an hour ago   190.6 MB

启动容器

启动容器

# docker container run -it --name centos01 linaction/centos:centos6 /bin/bash
[root@f2f7ecdecaf2 /]# 

检查已启动的容器。

确认容器环境的操作系统版本。

[root@f2f7ecdecaf2 /]# cat /etc/redhat-release
CentOS release 6.7 (Final)

确认容器内的进程

[root@f2f7ecdecaf2 /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 04:55 ?        00:00:00 /bin/bash
root        13     1  0 04:59 ?        00:00:00 ps -ef

确认容器环境的网络

[root@f2f7ecdecaf2 /]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:04
          inet addr:172.17.0.4  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:648 (648.0 b)  TX bytes:738 (738.0 b)

切换容器和主机Linux

1.从容器的/bin/bash退出并返回主机的Linux。

按住Ctrl键,依次按下P和Q。

从主机Linux再次连接到容器内的bash。

# docker container attach centos01
[root@f2f7ecdecaf2 /]#

容器的启动和停止

返回Linux主机

按住Ctrl键,依次按下P和Q。

停止容器

# docker container stop centos01

确认停止的容器

# docker container ls -a
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS                        PORTS               NAMES
f2f7ecdecaf2        linaction/centos:centos6   "/bin/bash"         23 minutes ago      Exited (137) 13 seconds ago                       centos01

启动容器。

# docker container start centos01

确认已启动的容器

# docker container ls
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES
f2f7ecdecaf2        linaction/centos:centos6   "/bin/bash"         30 minutes ago      Up 4 seconds                  centos01

6. 使用Docker容器的exec命令

# docker container exec -it centos01 /bin/bash
[root@f2f7ecdecaf2 /]# exit
# docker container ls
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES
f2f7ecdecaf2        linaction/centos:centos6   "/bin/bash"         30 minutes ago      Up 4 seconds                  centos01

用Dockerfile创建WordPress环境。

1.停止容器

# docker container stop centos01

创建一个用于构建的目录。

# mkdir ~/build_wordpress

创建一个Dockerfile。

# cd build_wordpress
# vim Dockerfile
Dockerfileのソースは事項参照
:wq
#centos6のイメージを取得
FROM centos:centos6

#タイムゾーンの設定
RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

#yumリポジトリの追加
RUN yum install -y epel-release
RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

#php7のインストール
RUN yum install -y --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-mysql php-gd php-mcrypt libmcrypt

#yumによるHTTPD,MySQL,tar,wgetのインストール
RUN yum -y install httpd mysql-server tar wget

#tmpディレクトリに移動
WORKDIR /tmp/

#wordpress一式のダウンロード
RUN wget https://ja.wordpress.org/latest-ja.tar.gz

#wordpressの展開
RUN tar xvfz ./latest-ja.tar.gz -C /var/www/html

#ダウンロードしたwordpressの削除
RUN rm -f ./latest-ja.tar.gz

#wordpressのconfigファイルをリネームして利用可能にする
RUN cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php

#wordpressのconfigファイルに必要な情報をsedコマンドで書き換える
RUN sed -i -e 's/database_name_here/wordpress/g' -e 's/username_here/wordpress/g' -e 's/password_here/wppass/g' /var/www/html/wordpress/wp-config.php

#DocumentRootディレクトリの所有者をapacheに変更
RUN chown -R apache.apache /var/www/html/

#mysqldの起動、DB作成、ユーザ作成および権限設定、mysqldの停止
RUN service mysqld start && mysql -u root -e "CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'wppass'; FLUSH PRIVILEGES;" && service mysqld stop

#mysqld,httpdの起動スクリプトの作成
RUN echo -e "service mysqld start\nservice httpd start\n/bin/bash" > /startService.sh

#mysqld,httpdの起動スクリプトの権限設定
RUN chmod o+x /startService.sh

#公開ポート
EXPOSE 80

#mysqld,httpdの起動スクリプトの実行
CMD /startService.sh

执行 Dockerfile。

# docker image build -t linaction/wordpress:ver1.0 ~/build_wordpress
・
・
Successfully built 0c4e45b86bcd

启动容器

# docker container run -itd -p 8000:80 --name wordpress01 linaction/wordpress:ver1.0
3ce407416874308af370951ecf56c77b53e2aa405ba20aae51593fd3a0e2e108

容器的提交

1. 浏览器确认

访问「http://VirtualBox的IP地址:8000/wordpress/」或者「http://公有云全球IP地址:8000/wordpress/」,确认WordPress的管理页面可以显示。
※如果是公有云的情况下,如果IP地址是外部IP且无法通过端口访问,请解除云端的防火墙。

暂停容器。

# docker container stop wordpress01

3. 保存容器

# docker container commit wordpress01 DockerHubアカウント名/wordpress:ver1.0
cf75652d0f8a1509a5ad132ecf1214416c2b8dbf9fe9f93830ab8b51e738db73

查看容器图像

# docker image ls
REPOSITORY                   TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
linaction/wordpress          ver1.0              cf75652d0f8a        56 seconds ago      474.9 MB
docker.io/centos             centos6             26cb1244b171        6 days ago          195 MB
docker.io/DockerHubアカウント名/centos   centos6             ce76491a3be1        2 hours ago         190.6 MB

将容器镜像推送至Docker Hub。

1. 登录Docker Hub

# docker login
Username:
Password:
Email:
Login Succeeded

将容器镜像推送到Docker Hub。

# docker image push DockerHubアカウント名/wordpress
Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/linaction/wordpress] (len: 0)
・
・
Digest: sha256:97e3bd8b7ed451163af7284513d398c426c796451d343400a9859156c1a8c021

确认代码库

# docker search DockerHubアカウント名
INDEX       NAME                            DESCRIPTION               STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/DockerHubアカウント名/wordpress

重新下载容器镜像

让我们最后删除所有镜像和停止的容器,并下载并启动推送的WordPress容器镜像。

1. 停止并批量删除容器

# docker container rm `docker container ls -a -q`
# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

2. 批量删除图像

# docker image rm `docker image ls -a -q`
# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

下载WordPress的容器镜像。

# docker image pull -a DockerHubアカウント名/wordpress

启动容器

# docker container run -itd -p 8000:80 --name wordpress01 DockerHubアカウント名/wordpress:ver1.0

5. 浏览器确认

请访问「http://VirtualBox的IP地址:8000/wordpress/」或者「http://公共云全局IP地址:8000/wordpress/」,确保能够显示WordPress的管理界面。
※对于公共云的情况,如果无法通过外部IP和端口进行访问,请解除云端的防火墙限制。

广告
将在 10 秒后关闭
bannerAds