版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
安装及可能遇到的的问题
- 安装,参照官方文档即可
- Docker的守护进程(daemon)绑定Unix socket端口而不是TCP端口,Unix socket默认仅root用户可用,所以非root用户执行docker命令时要加sudo。docker守护进程启动时,会将Unix socket使用权限赋予docker用户组,所以将当前用户加入docker用户组,即可省去sudo:
新建docker用户组
$ sudo groupadd docker
将当前用户加入docker用户组
$ sudo gpassed -a $USER docker
刷新用户组
$ newgrp docker
- 检查是否安装成功:
查看版本
$ docker --version
Docker version 19.03.2, build 6a30dfca03
或查看详细信息
$ docker info
Client:
Debug Mode: false
Server:
Containers: 5
Running: 0
Paused: 0
Stopped: 5
Images: 8
Server Version: 19.03.2
...
- 使用hello-world测试docker
$ docker run hello-world
如果报错:
docker: error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/fc/fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e/data?verify=1557478882-B3IuIwGdskoJAgoGLehIsXKMyFA%3D: net/http: TLS handshake timeout.
因为国内访问docker官方仓库不方便,可以使用国内镜像源。在/etc/docker/目录下新建daemon.json
键入:
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
保存退出后载入该文件并重启docker
systemctl deamon-reload
systemctl restart docker
可以通过docker info
命令查看Registry Mirrors的值检查镜像仓库是否配置
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://alzgoonw.mirror.aliyuncs.com/
Live Restore Enabled: false
Container 容器 的基本用法
-
创建一个容器
1.1. 新建一个目录
1.2. 进入该目录
1.3 新建Dockerfile文件,程序(app.py),requirements.txt
1.4 创建镜像
docker build --tag=friendlyhello:v0.0.1 .
1.5 运行容器,我理解的容器时运行的镜像,类似与进程与程序的关系
映射80端口为容器内的4000端口
docker run -p 4000:80 friendlyhello:v0.0.1
使用detach模式(容器在后台运行,返回容器ID)
docker run -d -p 4000:80 friendlyhello:v0.0.1
-
查看正在运行的容器
docker ps
终止一个正在运行的容器
docker stop containerID
查看未运行的所有容器
docker ps -a
移除一个容器
docker rm containerID
移除一个镜像
docker rmi imageID
- 登陆docker hub
docker login
给当前的镜像命名
docker tag image username/repository:tag
比如命名为friendlyhello:
$ docker tag friendlyhello:v0.0.1 josephthatwho/get-started:part2
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
josephthatwho/get-started part2 4e890321b7fa 55 minutes ago 148MB
friendlyhello v0.0.1 4e890321b7fa 55 minutes ago 148MB
python 2.7-slim f462855313cd 13 days ago 137MB
hello-world latest fce289e99eb9 8 months ago 1.84kB
上传镜像到库
docker push username/repository:tag
比如:
$ docker push josephthatwho/get-started:part2
The push refers to repository [docker.io/josephthatwho/get-started]
50197409d935: Pushed
89c071f66b04: Pushed
5dd4d9819892: Pushed
a4f231ef8285: Mounted from library/python
912905f45a34: Mounted from library/python
411e68dbb588: Mounted from library/python
2db44bce66cd: Mounted from library/python
part2: digest: sha256:a0120945444e879b540276c761114b89fabcdd9118475c6b987cb37c8e3d75b8 size: 1788
运行远程库中的镜像
docker run -p 4000:80 username/repository:tag
比如:
$ docker run -p 4000:80 josephthatwho/get-started:part2
如果本地没有名为josephthatwho/get-started:part2的镜像,docker将从远程库中拉取。
无论在任何机器上执行docker run
命令,他都会将镜像连同Python以及requriement.txt中标注的所有依赖环境一起拉取并执行代码。而不需要在主机上安装任何文件。