docker快速入门
一、什么是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.html
和index.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的底层信息
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -
代码块窗口可以调一下,后面看不到了
安装 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(un
看不到后续,