Docker容器学习梳理--基础环境安装

以下是centos系统安装docker的操作记录

1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker 安装epel源 [root@docker-server ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm [root@docker-server ~]# rpm -ivh epel-release-latest-6.noarch.rpm [root@docker-server ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [root@docker-server ~]# sed -i 's/^#baseurl/baseurl/g' /etc/yum.repos.d/epel.repo [root@docker-server ~]# sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/epel.repo

安装docker-io [root@docker-server ~]# yum install docker-io -y

修改docker镜像和容器存储路径 [root@docker-server ~]# vim /etc/sysconfig/docker ------------ other_args="--graph=/docker"                                 //配置这一行 ------------

启动docker [root@docker-server ~]# service docker start [root@docker-server ~]# chkconfig docker on [root@docker-server ~]# ps -ef|grep docker root 36263 1 7 19:35 pts/0 00:00:00 /usr/bin/docker -d --graph=/docker root 36413 34216 0 19:35 pts/0 00:00:00 grep --color docker

[root@docker-server ~]# ls /docker/ containers devicemapper graph init linkgraph.db repositories-devicemapper tmp trust volumes

获取官方centos或ubuntu镜像。 这里需要特别说明下:通过实测发现,现在在centos6下的docker获取镜像失败,在centos7下的docker获取镜像可以。 所以一般建议在centos7下部署docker环境,然后docker获取centos6的容器镜像(centos7容器镜像有不少坑) [root@docker-server ~]# docker pull centos [root@docker-server ~]# docker pull ubuntu [root@docker-server ~]# docker images            //查看本地镜像

运行一个docker容器 容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。(/bin/bash命令语句必须要放在镜像名的后面) [root@docker-server ~]# docker run -i -t centos /bin/bash [root@docker-server ~]# docker run -i -t ubuntu /bin/bash

[root@docker-server ~]# docker -v                       //版本不是最新版的 Docker version 1.7.1, build 786b29d/1.7.1

上面是centos6系统下做法。如果是centos7的话,直接yum install docker即可安装

2)第二种方法:安装Docker官方的最新发行版(推荐在centos7下采用这种方法安装最新版本的docker) [root@docker-server ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@docker-server ~]# curl -sSL https://get.daocloud.io/docker | sh [root@docker-server ~]# systemctl enable docker   [root@docker-server ~]# systemctl start docker

[root@docker-server ~]# systemctl stop docker          //关闭 [root@docker-server ~]# systemctl restart docker      //重启

安装过程结束后,可执行下面命令验证安装的状态。 如果看到输出 active (running) 就表示安装成功。 [root@docker-server ~]# systemctl status docker

查看docker版本 [root@docker-server ~]# docker -v                 //最新版本 Docker version 1.12.5, build 7392c3b

开机启动,systemctl enable docker.service          (docker.service改为docker也可以)
启动,systemctl start/stop/restart/status docker.service
启动,systemctl start docker.service
帮助,docker --help
概要信息,docker info
镜像查看,docker images
容器查看,即进程查看,docker ps -a

获取官方centos或ubuntu镜像 [root@docker-server ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos 45a2e645736c: Pull complete Digest: sha256:c577af3197aacedf79c5a204cd7f493c8e07ffbce7f88f7600bf19c688c38799 Status: Downloaded newer image for centos:latest

[root@docker-server ~]# docker images            //查看镜像 REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 67591570dd29 2 weeks ago 191.8 MB

上面在centos7下安装的docker,如果在获取centos容器镜像的时候不指定版本,那么下载下来的容器镜像默认也是centos7版本; 但是可以在获取镜像的时候指定版本,比如: [root@linux-node2 ~]# docker pull centos:centos6 centos6: Pulling from library/centos 32c4f4fef1c6: Pull complete Digest: sha256:1092df198d3da4faccc0660941b763ce5adf133b0ec71701b760d6f173c1f47b Status: Downloaded newer image for centos:centos6 [root@linux-node2 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 67591570dd29 2 weeks ago 191.8 MB centos centos6 8315978ceaaa 8 weeks ago 194.6 MB daocloud.io/daocloud/daocloud-toolset latest 1ab33797d8a1 8 months ago 150.2 MB

还可以如下获取镜像 docker pull ubuntu docker pull ubuntu:14.04 docker pull ubuntu:latest docker pull centos:latest docker pull centos:7.1 docker pull centos:6.5 docker pull centos:6.8 docker pull centos:6 docker pull centos:7

启动容器,并且进入到centos容器的bash命令。 启动时的现象:其实相当于启动了一个虚拟机; [root@linux-node2 ~]# docker run -i -t centos /bin/bash [root@fd81256d3c96 /]# echo "welcome to docker" welcome to docker [root@8f65f826ad80 /]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)

通过docker ps命令可以列出当前所有正在运行的container [root@linux-node2 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fd81256d3c96 centos "/bin/bash" About a minute ago Up About a minute focused_bose

下面命令将会停止上面启动的实例,这样就会自动强制退出容器 [root@linux-node2 ~]# docker stop fd81256d3c96 fd81256d3c96 [root@linux-node2 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

其他: docker ps -l //列出最近一次启动的,且正在运行的container docker ps -a //列出所有的container

docker run -p 80:8080 <image> <cmd> //映射容器的8080端口到宿主机的80端口 docker rm `docker ps -a -q` //删除所有容器 docker rm $CONTAINER_ID //删除容器id为CONTAINER_ID的容器 docker images //查看本地镜像 docker attach $CONTAINER_ID //启动一个已存在的docker实例 docker stop $CONTAINER_ID //停止docker实例(或者直接退出容器登陆;不然这个命令执行后也会强制退出容器的登陆) docker logs $CONTAINER_ID //查看docker实例运行日志,确保正常运行 docker inspect $CONTAINER_ID //查看container的实例属性,比如ip等等

------------------------------------------------------------------------------------------------------------------------ 如下:举例说明在docker下部署nginx 宿主机上执行下面命令:启动容器,进入centos容器的/bin/bash命令,并且会映射container的8080端口到宿主机的8888端口 /home/wangshibo/docker为要挂载的宿主机本地目录(如果提前不创建,也会自动生成的); /home/mycontainer为docker映射路径,即在容器里的路径。这个和上面挂载宿主机的文件夹里内容一样!(下面是基于centos镜像创建的容器) [root@linux-node2 ~]# docker run -t -i -v /home/wangshibo/docker:/home/mycontainer:rw -p 8888:8080 centos /bin/bash

docker命令包含以下三个部分:
docker run <相关参数> <镜像 ID> <初始命令>
其中,相关参数包括:
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

[root@8f65f826ad80 /]# yum install -y wget lsof vim

添加CentOS 7 Nginx yum资源库,然后安装nginx [root@8f65f826ad80 /]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm [root@8f65f826ad80 /]# yum install -y nginx

[root@8f65f826ad80 conf.d]# pwd /etc/nginx/conf.d [root@8f65f826ad80 conf.d]# cat test.conf server { listen 8080; server_name localhost; location / { root /var/www/html; index index.html; } }

[root@8f65f826ad80 conf.d]# mkdir -p /var/www/html [root@8f65f826ad80 conf.d]# cat /var/www/html/test.html this is nginx page of docker!!

启动/关闭/重启nginx:systemctl start/stop/restart nginx.service 开机启动nginx:systemctl enable nginx.service 网站文件存放默认目录:/usr/share/nginx/html 网站默认站点配置:/etc/nginx/conf.d/default.conf 自定义Nginx站点配置文件存放目录:/etc/nginx/conf.d/ Nginx全局配置:/etc/nginx/nginx.conf

启动nginx,有如下报错 [root@8f65f826ad80 conf.d]# systemctl start nginx.service Failed to get D-Bus connection: Operation not permitted -------------------------------------------------------------------------------------------------------------------- 这是centos7容器里面出现的一个BUG! 即centos7镜像创建的容器里面安装服务后,不能用systemctl/service启动服务,centos6的容器里没有这个坑! 可以通过使用其他的方式启动或者换用centos6的镜像来避免这个错误。

解决方案如下: 原因是dbus-daemon没能启动。其实systemctl并不是不可以使用,可以将你的CMD或者entrypoint设置为/usr/sbin/init即可。 这样就会自动将dbus等服务启动起来。即采用 /usr/sbin/init自动启动dbus daemon

下面这个命令会一直在执行中,不能停止这个命令 [root@linux-node2 ~]# docker run --privileged -t -i -v /home/wangshibo/docker:/home/mycontainer:rw -p 8888:8080 centos /sbin/init

保证上面的命令执行后,可以查到它的容器ID(这个ID就是nginx所在容器的ID) [root@linux-node2 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eaf66f1e43ab centos "/sbin/init" 16 seconds ago Up 15 seconds 0.0.0.0:8888->8080/tcp hungry_khorana

接着在另一个终端窗口下执行下面命苦:即通过上面容器ID进入到它的/bin/bash命令下 [root@linux-node2 ~]# docker exec -it eaf66f1e43ab /bin/bash [root@eaf66f1e43ab /]# 然后就接着安装nginx的操作了(从上面的yum install -y wget lsof vim开始重新操作) --------------------------------------------------------------------------------------------------------------------

如上解决后,再次启动nginx [root@eaf66f1e43ab /]# systemctl start nginx.service [root@eaf66f1e43ab /]# ps -ef|grep nginx root 229 1 0 09:43 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 230 229 0 09:43 ? 00:00:00 nginx: worker process root 233 87 0 09:43 ? 00:00:00 grep --color=auto nginx [root@eaf66f1e43ab /]# lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 229 root 7u IPv4 60407703 0t0 TCP *:webcache (LISTEN) nginx 230 nginx 7u IPv4 60407703 0t0 TCP *:webcache (LISTEN)

记得在宿主机的防火墙上开启8888端口: [root@linux-node2 home]# vim /etc/sysconfig/iptables ....... -A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT [root@linux-node2 home]# systemctl restart iptables.service

验证访问(宿主机ip假设为110.117.88.99)

检查下容器创建时映射目录和挂载目录情况: [root@eaf66f1e43ab ~]# ll /home/mycontainer/        total 0 [root@eaf66f1e43ab ~]# echo "123456" > /home/mycontainer/test [root@eaf66f1e43ab ~]# cat /home/mycontainer/test            //容器里面的情况 123456

[root@linux-node2 ~]# cat /home/wangshibo/docker/test      //容器外挂载到宿主机目录下的情况 123456

可以将这个docker主机添加到DaoCloud云平台里面管理

-------------------------------------------------------------------------------------------------------------------------------------

[下载DaoCloud里面的镜像]可以通过DaoCloud云平台-->镜像仓库-->发现镜像,找到对应镜像的地址。最后可以根据这个镜像地址下载到docker服务器上,如下:

然后找到对应镜像的镜像地址:

然后就可以在服务器上进行镜像下载了:

-------------------------------------------------------------------------------------------------------------------------------------

以下是Ubuntu 12.04以上系统安装docker环境的操作记录

安装方法一 ubuntu14.04以上的版本都是自带docker安装包的,所以可以直接安装,但一般也不是最先版本。 [ubuntu@localhost:~]$ sudo apt-get update [ubuntu@localhost:~]$ sudo apt-get install docker.io

安装方法二 安装 Docker 官方的最新发行版 [ubuntu@localhost:~]$ curl -sSL https://get.daocloud.io/docker | sh

安装过程结束后,可执行下面命令验证安装结果。如果看到输出 docker start/running 就表示安装成功。 [ubuntu@localhost:~]$ sudo service docker status

--------------或者使用下面的安装,也是最新版的docker-------------------- [ubuntu@localhost:~]$ sudo apt-get update [ubuntu@localhost:~]$ curl -s https://get.docker.io/ubuntu/ | sudo sh 这个方法启动docker若出现下面错误; FATA[0000] Error loading docker apparmor profile: fork/exec /sbin/apparmor_parser: no such file or directory () 别担心,请安装apparmor软件即可 [ubuntu@localhost:~]$ sudo apt-get install apparmor

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP技术大全

docker 镜像与容器的导入导出操作实践

公司有一台测试服务器,网速比较慢,特别是下载一些国外站点镜像的时候,而我本机则比较快,还有梯子,所以在思考一个问题;是否能在我本地把镜像下载下来,然后复制到测试...

1951
来自专栏Spring相关

在Centos7上安装Docker

在Centos7上安装Docker-ce直接用yum install docker -y安装的docker版本为1.12,但是docker发展很快,现在都18....

2233
来自专栏微服务

Centos搭建Docker环境

安装Docker 安装Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 ...

32310
来自专栏互联网开发者交流社区

SpringBoot与docker

1192
来自专栏编程坑太多

跟我一起学docker(四)--容器的常用操作

1413
来自专栏吴伟祥

Docker学习——三大组件的应用(二) 顶

Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。 下面将介绍更多关于镜像的内容,包括:从仓库获取镜像...

1172
来自专栏Angular&服务

搭建docker环境

1073
来自专栏人工智能

发现Docker的IP地址

我们使用Eclipse Che在Docker上编写了很多实用程序。它们占用空间小,便于携带,可以在许多不同的操作系统上运行,而无需用户安装额外的软件。

2740
来自专栏IT笔记

Docker学习之搭建MySql容器服务

MySQL 5.6 SQL数据库服务器Docker镜像,此容器映像包含用于OpenShift的MySQL 5.6 SQL数据库服务器和一般用法。用户可以选择RH...

4306
来自专栏JMCui

Docker 系列三(容器管理).

    指明了 -d 运行镜像,会返回容器的 id;如果不指明 -d 运行镜像,会打印出 catalina.out 的 日志,在 [crtl +c] 后,容器即...

1013

扫码关注云+社区