存档

文章标签 ‘docker’

docker快速入门

2019年7月23日 1 条评论

一、什么是docker

dcoker包括一个命令行程序、一个后台守护进程,以及一组远程服务器。他简化了安装、运行、发布和删除软件。

二、镜像、容器、仓库

镜像,是特殊的文件系统,他包含程序、配置、资源等。

容器,镜像的实例。就像是类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库,用于保存镜像的服务。

三、centos安装docker和docker-compose

注意需要使用 root 账户或者可以使用 sudo 的账户

Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。

社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

社区版按照stable和edge两种方式发布,每个季度更新stable版本,如18.06,18.09;每个月份更新edge版本,如18.09,18.10。

安装docker

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

 $ uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

4、安装依赖

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

5、添加docker下载仓库

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

6、docker安装和验证

# 安装docker-ce
sudo yum install docker-ce

# 启动docker-ce
sudo systemctl start docker

# 验证
sudo docker --version

安装 docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version

五、安装过程中可能遇到的错误

Error response from daemon: Get https://index.docker.io/v1/search?q=nginx&n=25: dial tcp: lookup index.docker.io on [::1]:53: read udp [::1]:57785->[::1]:53: read: connection refused

需要配置dns,查看服务器DNS网络配置

vi /etc/resolv.conf

添加
nameserver 8.8.8.8

docker pull nginx
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: req uest canceled while waiting for connection (Client.Timeout exceeded while await ing headers)

这个问题多是网络连接不好或者没有网络,网络不好可以采用国内镜像,内网用户没有网络可以配置代理。

六、docker代理设置

内网服务器不能直接联网,虽然命令行配置了http_proxy环境变量,但是docker命令行工具读不到,会出现上面的类似错误。需要单独配置docker的代理:

覆盖docker.service file来实现

1. 创建 docker.service.d 目录

$ mkdir -p /etc/systemd/system/docker.service.d

2. 创建HTTP 或者HTTPS 代理文件

HTTP:

vim /etc/systemd/system/docker.service.d/http-proxy.conf

HTTPS:

vim /etc/systemd/system/docker.service.d/https-proxy.conf

由于我这里用的是 “HTTPS”,所以只给大家演示HTTPS代理的配置,对于HTTP代理的修改,非常相似,大家可以参考我最后贴出来的连接。

3. 修改 https-proxy.conf 文件

[Service]
Environment="HTTPS_PROXY=xxx.xxx.xxx.xxx:443" "NO_PROXY=localhost,127.0.0.1,xxx.xxxxxx:5000"

解析:

主要是两点内容:

①  HTTPS_PROXY 将它的值对应到您所希望设置的代理服务地址和端口(例如: HTTPS_PROXY=https://proxy.example.com:443),我这里为了保护隐私,就用xxx代替.

②  NO_PROXY 意味着某些情况下我们不需要使用HTTPS代理来访问,一般这就配置私有仓库的路径(例如:NO_PROXY=localhost,127.0.0.1,mydocker-registry.com:5000

4. 完成修改后保存/刷新

###Flush changes:
#systemctl daemon-reload

###Restart Docker:
#systemctl restart docker

5. 查看修改结果

#systemctl show --property=Environment docker

Environment=HTTPS_PROXY=xxx.xxx.xxx.xxx:443 NO_PROXY=localhost,127.0.0.1,mydocker-registry.com:5000

测试:

七、如何使用Docker加速器

针对Docker客户端版本大于1.10的用户

修改daemon配置文件/etc/docker/daemon.json来使用加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://w5z91a3d.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

八、docker常用命令

docker拉取镜像

docker pull [选项] name[:tag]

docker查看镜像

docker images

创建并启动容器

docker run [options] image [command] [arg...]

docker run -d -p 80:80 --name cn1 nginx

-d 放在后台执行

-p 主机端口:容器端口 将容器的端口映射到主机上,目的是可以直接对外提供访问

--name 指定容器名

查看容器状态

docker ps

验证docker运行正常

进入容器

docker exec -it cn1 bash

对容器的操作,就像普通linux那样。我们定位到/usr/share/nginx/html/目录,列出所有文件:

目录下有50x.htmlindex.html两个文件,我们新建一个test.html

echo "<html><header><title>测试页面</title></header>test</html>" >> test.html

测试之前,先从docker退出来,不能可能会找不到命令

停止容器

docker stop [options] container

停止cn1容器
(也可以指定container id停止容器,docker stop 0e9e817ddb5e) ,不能使用镜像名

查看停止状态容器

容器停止并没有销毁,我们可以使用docker ps -a查看停止状态的容器

重启停止状态的容器

docker start cn1

删除容器

删除容器前,必须先停止容器。删除命令:
docker rm 容器名

再次查看终止状态容器,docker ps -a

容器cn1已经被彻底销毁,销毁的容器不能使用start启动,需要使用run重启运行。

删除镜像

删除命令:
docker rmi -f {repository}:{tag}docker rmi -f {image id}

九、docker 网络

linux使用namespace来进行资源的隔离 ,docker的隔离性;

1、docker的网路类型分为:

Bridge模式:桥接(默认的模式)

host模式:容器将不会获得独立的network namespace,将和主机公用一个;即在docker中使用网络和主机上一样的;

None:不与外界任何东西进行通讯

2、采用Bridge的时候需要和主机通讯,就需要使用端口映射

3、端口映射

主机的8080端口映射到容器中的80端口
$ docker run -d --name cn1 -p 8080:80 nginx  

十、docker常用命令速查

docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
docker ps -l # 查看最近一次运行的容器

docker create 容器名或者容器ID # 创建容器
docker start [-i] 容器名 # 启动容器
docker run 容器名或者容器ID # 运行容器,相当于docker create + docker start
docker attach 容器名或者容器ID bash # 进入容器的命令行(退出容器后容器会停止)
docker exec -it 容器名或者容器ID bash # 进入容器的命令行
docker stop 容器名 # 停止容器
docker rm 容器名 # 删除容器

docker top 容器名 # 查看WEB应用程序容器的进程
docker inspect 容器名 # 查看Docker的底层信息

分类: linux 标签: