Docker基本使用(一)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/JosephThatwho/article/details/101424226

安装及可能遇到的的问题

  1. 安装,参照官方文档即可
  2. 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
  1. 检查是否安装成功:
    查看版本
$ 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
...
  1. 使用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. 新建一个目录
    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

  2. 查看正在运行的容器

docker ps

终止一个正在运行的容器

docker stop containerID

查看未运行的所有容器

docker ps -a

移除一个容器

docker rm containerID

移除一个镜像

docker rmi imageID
  1. 登陆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中标注的所有依赖环境一起拉取并执行代码。而不需要在主机上安装任何文件。

猜你喜欢

转载自blog.csdn.net/JosephThatwho/article/details/101424226