Docker:创建第一个容器
一、Docker安装测试
要想让Docker良好运行起来,最好你的操作系统是64位的,内核版本不低于3.10,所以最好直接使用CentOS7系列的系统,当然你也可以使用debian之类的系统。我这里就以CentOS7为例了,具体各个系统docker的相关安装方法这里不作介绍,具体安装参考官档。
Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月,有点类似于ubuntu的版本发布方式。企业版自然会提供一些额外的服务,当然肯定也是收费的。企业版说明:https://blog.docker.com/2017/03/docker-enterprise-edition
社区版分为stable和edge两种发布方式。
stable版本是季度发布方式,比如17.03, 17.06, 17.09
edge版本是月份发布方式, 比如17.03, 17.04……
1.1 系统版本
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@localhost ~]# uname -r 3.10.0-693.el7.x86_64
1.2 安装Docker
1)Docker命令工具需要root权限才能工作,你可以将你的用户放入docker组来避免每次都要使用sudo。
2)添加YUM源。
# tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF
注意:2020年3月31日,Docker将关闭托管在“ dockerproject.org”和“ dockerproject.com”上的APT和YUM存储库。
使用以下方法设置稳定的存储库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
3)安装Docker
$ yum install docker-engine
4)启动Docker
# systemctl enable docker.service # systemctl start docker
5)查看Dcoker版本
# docker version Client: Version: 17.05.0-ce API version: 1.29 Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:06:25 2017 OS/Arch: linux/amd64 Server: Version: 17.05.0-ce API version: 1.29 (minimum version 1.12) Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:06:25 2017 OS/Arch: linux/amd64 Experimental: false
6)运行测试Dcoker
# docker run --rm hello-world
二、Docker创建一个WordPress容器
Docker HUB : Docker镜像首页,包括官方镜像和其它公开镜像。这个公共registry上有你需要的几乎所有东西的镜像:Ubuntu、Fedora、Postgresql、MySQL、Jenkins、Elasticsearch、Redis等等。Docker开发人员在这个公共registry里维护着数个镜像,不过你能从上面拉取大量来自用户发布的自建镜像。
因为国情的原因,国内下载Docker HUB官方的相关镜像比较慢,可以使用阿里云镜像加速器,但需要有一个阿里云账号就可以获得一个专属加速器,比如https://zjbap5fx.mirror.aliyuncs.com;至于加速器怎么使用,阿里云都有说明。另外可能你需要或想要一个私有的registry(用于开发应用之类的容器),有好几个方式可以设置自己的私有registry,当然你也可以买一个。
下面我们以搭建一个WordPress为例开始Docker之旅。
第一步:搜索镜像(search)
$ docker search wordpress NAME DESCRIPTION STARS OFFICIAL AUTOMATED wordpress The WordPress rich content management syst... 1329 [OK]
第二步:下载镜像(pull)
从公共registry下载一个镜像:
$ docker pull wordpress
WordPress启动还需要MySQL,所以我们还需要下载一个MySQL。
$ docker pull mysql
第三步:查看自己的镜像(images)
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest 368db5c51bcd 4 days ago 420 MB mysql latest cf725f136fd2 4 days ago 383.4 MB nginx latest e43d811ce2f4 4 days ago 181.4 MB ubuntu latest f753707788c5 12 days ago 127.1 MB hello-world latest c54a2cc56cbb 3 months ago 1.848 kB
第四步:启动一个WordPress容器(run)
* 需要先启动MySQL容器
$ docker run --name mysql_wordpress -e MYSQL_ROOT_PASSWORD=wordpress -d mysql 75648d50943e7529628002f42efd01124c8338449d25be1fb58be5be056d2c0b
--name:给此容器指定一个名称。
-e MYSQL_ROOT_PASSWORD:指定环境变量参数,如MySQL的root用户密码设定。
-d:表示丢在后台运行。
容器启动后,输出的是分配的ID,因为是随机的,你的将有所不同。另外对于mysql容器还提供了很多变量,可以使用 docker exec mysql env查看。
第五步:* 然后启动WordPress容器
$ docker run --name docker_wordpress --link mysql_wordpress:mysql -p 8080:80 -d wordpress 189b414ce5111f373fd0ae96a6465e09430a0bef7c40da166ed52aea9cb6a577
WordPress容器运行参数解释:
--name:给此容器指定一个名称。
--link:指定需要关联的MySQL容器,并指定一个别名,这里的别名必须为mysql,不然环境变量的名称就会改变。
-p:指定此容器的端口,默认是80;这里映射为8080了。
-d:表示丢在后台运行。
-e WORDPRESS_DB_USER:指定的一些环境参数,缺省连接DB的用户为“root”。
-e WORDPRESS_DB_PASSWORD:指定的一些环境参数,缺省连接root用户的密码为连接MySQL容器的环境变量MYSQL_ROOT_PASSWORD的值。
-e WORDPRESS_DB_NAME:指定的一些环境参数,缺省库为 “wordpress”。
还有一些不常用的如:
-e WORDPRESS_AUTH_KEY -e WORDPRESS_SECURE_AUTH_KEY -e WORDPRESS_LOGGED_IN_KEY -e WORDPRESS_NONCE_KEY -e WORDPRESS_AUTH_SALT -e WORDPRESS_SECURE_AUTH_SALT -e WORDPRESS_LOGGED_IN_SALT -e WORDPRESS_NONCE_SALT
这些变量都是在WordPress这个镜像中定义好的,某个地方引用某个变量都是定义好的,所以这里只需要传入对应的值即可。这里可能会考虑,目标容器link到源容器时是怎么获取源容器的连接信息呢?这就涉及到容器间link的机制,具体博客有说明。
接下来就可以在浏览器中输入http://localhost:8080进行wordpress的配置了。
第六步:列出当前正在运行的docker容器(ps)
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 189b414ce511 wordpress "docker-entrypoint.sh" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp docker_wordpress 75648d50943e mysql "docker-entrypoint.sh" About an hour ago Up About an hour 3306/tcp mysql_wordpress
列出当前系统所有的容器
$ docker ps -a
第七步:进入到一个docker容器(exec)
$ docker exec -ti docker_wordpress /bin/bash root@189b414ce511:/var/www/html#
三、Docker创建一个Ubuntu容器 首先确认我本地是有Ubuntu镜像的。
$ docker images ubuntu REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest f753707788c5 12 days ago 127.1 MB
然后我们来创建一个Ubuntu容器。
$ docker run --rm -it ubuntu /bin/bash root@32cb81d2683d:/# echo "first docker container" first docker container
参数解释:
run:运行一个容器。
–rm:告诉Docker一旦运行的进程退出就删除容器,这在进行测试时非常有用,可免除杂乱。
-ti:告诉Docker分配一个伪终端(-t,tty)并进入交互模式(-i,interactive),这将进入到容器内,对于快速原型开发或尝试很有用,但不要在生产容器中打开这些标志。
ubuntu:这是容器立足的镜像。
/bin/bash:要运行的命令,因为我们以交互模式启动,它将显示一个容器的提示符。
在运行run命令时,你可指定链接、卷、端口、窗口名称(如果你没提供,Docker将分配一个默认名称)等等。
PS:ubuntu会有多个版本,通过指定tag来启动特定的版本[image]:[tag]。

                
            
        
浙公网安备 33010602011771号