一、简介
Docker是一个开源的应用容器引擎;是一个轻量级容器技术; Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使 用这个镜像; 运行中的这个镜像称为容器,容器启动是非常快速的。
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。
二、核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上); docker客户端(Client):连接docker主机进行操作; docker仓库(Registry):用来保存各种打包好的软件镜像; docker镜像(Images):软件打包好的镜像;放在docker仓库中; docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
三、安装docker
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r命令查看你当前的内核版本
csharp;gutter:false;
$ uname -r</p>
<pre><code>
2、使用
权限登录 Centos。确保 yum 包更新到最新。
</code></pre>
<p>$ sudo yum update</p>
<pre><code>
3、卸载旧版本(如果安装过旧版本的话)
</code></pre>
<p>$ sudo yum remove docker docker-common docker-selinux docker-engine</p>
<pre><code>
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
</code></pre>
<p>$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2</p>
<pre><code>
5、设置yum源
;gutter:true;
//阿里源
sudo yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//稳定源
sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

6、可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r

7、安装docker
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install # 例如:sudo yum install docker-ce-17.12.0.ce

8、启动Docker并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version

问题
1、因为之前已经安装过旧版本的docker,在安装的时候报错如下:
Transaction check error:
file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
2、卸载旧版本的包
$ sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

3、再次安装docker
$ sudo yum install docker-ce
四、Docker仓库
Docker常用命令&操作
1)、镜像操作
操作命令说明 检索 docker search 关键字 eg: docker search redis 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。 拉取 docker pull 镜像名:tag :tag是可选的,tag表示标签,多为软件的版本,默认是latest 列表 docker images 查看所有本地镜像 删除 docker rmi image-id 删除指定的本地镜像
搜索对于的镜像名,可以查看镜像的TAG
- //docker hub地址,如果有特殊需要可以这里查询版本tag
- https://hub.docker.com/r/library/
1、拉取镜像,此处举例httpd,镜像的ID唯一标识了镜像,如果ID相同,说明是同一镜像。TAG信息来区分不同发行版本,如果不指定具体标记,默认使用latest标记信息
- //默认下载latest版本
- docker pull httpd
- //如果需要特殊版本则加上需要的tag
- docker pull redis:5.0 .5-alpine3 .10
- //docker hub地址,如果有特殊需要可以这里查询版本tag
- https://hub.docker.com/r/library/
2、查看镜像,可以发现httpd已经拉取成功
<span class="hljs-attr">docker</span> <span class="hljs-string">images</span>
3、创建一个容器并运行,将容器命名为dockerhttpd ,并把80端口映射到宿主机的8080端口,宿主机的目录/dockerdata/httpd挂载到容器的/var/www/httpd/
docker run -it -d -p <span class="hljs-number">8080</span>:<span class="hljs-number">80</span> --name dockerhttpd -v <span class="hljs-regexp">/dockerdata/</span><span class="hljs-attr">httpd:</span><span class="hljs-regexp">/var/</span>www<span class="hljs-regexp">/httpd/</span> httpd
参数说明如下:
-i:以交互模式运行容器,通常与-t同时使用。
-t:为容器重新分配一个伪输入终端,通常与-i同时使用。
-d:后台运行容器,并返回容器ID。
-p:端口映射,格式为”宿主机端口:容器端口”。
–name:为容器指定一个名称。
-v:把宿主机上的一个目录挂载到镜像里,格式为”宿主机目录:镜像内挂载的路径”,必须为绝对路径。
五、安装MySQL示例
<span class="hljs-attribute">docker</span> pull mysql
错误的启动
- [root@localhost ~]# docker run ‐‐name mysql01 ‐d mysql
- 42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846
- mysql退出了
- [root@localhost ~]# docker ps ‐a
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 42f09819908b mysql “docker‐entrypoint.sh” 34 seconds ago Exited
- (1) 33 seconds ago mysql01
- 538bde63e500 tomcat “catalina.sh run” About an hour ago Exited
- (143) About an hour ago compassionate_
- goldstine
- c4f1ac60b3fc tomcat “catalina.sh run” About an hour ago Exited
- (143) About an hour ago lonely_fermi
- 81ec743a5271 tomcat “catalina.sh run” About an hour ago Exited
- (143) About an hour ago sick_ramanujan
- //错误日志
- [root@localhost ~]# docker logs 42f09819908b
- error: database is uninitialized and password option is not specified
- You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and
- MYSQL_RANDOM_ROOT_PASSWORD;这个三个参数必须指定一个
正确的启动
- [root@localhost ~]# docker run ‐‐name mysql01 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql
- b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
- [root@localhost ~]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS
- PORTS NAMES
- b874c56bec49 mysql “docker‐entrypoint.sh” 4 seconds ago Up 3
- seconds 3306/tcp mysql01
几个其他的高级操作
- docker run ‐‐name mysql03 ‐v /conf/mysql:/etc/mysql/conf.d ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw
- ‐d mysql:tag
- 把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
- 改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)
- docker run ‐‐name some‐mysql ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw ‐d mysql:tag ‐‐character‐set‐
- server=utf8mb4 ‐‐collation‐server=utf8mb4_unicode_ci
-
指定mysql的一些配置参数
-
//docker hub地址,如果有特殊需要可以这里查询版本tag
- https://hub.docker.com/r/library/
Original: https://www.cnblogs.com/dingjiaoyang/p/13503651.html
Author: 皎陽
Title: Linux(CentOS7)安装Docker,镜像拉取、使用及常用操作
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10106/
转载文章受原作者版权保护。转载请注明原作者出处!