漫话Python

容器技术docker入门

2019-04-19  本文已影响0人  DayBreakL

docker是什么

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

docker与虚拟机

docker与虚拟机

docker下载、安装

docker 镜像管理命令

  1. docker pull image_name [:tag]
    拉取镜像,不写tag默认最新版本latest
  2. docker push image_name
    推送镜像
  3. docker images
    查看当前机器所有镜像
  4. docker rmi image_name /image_id
    删除当前机器的一个镜像
  5. docker tag source_images_name:tag your_images_name:tag
    为一个镜像打上tag
    原本的镜像的源版本是不可修改的,只能给它打tag,增加新的版本
    docker tag jenkens:latest jenkens:5.5
    docker tag jenkens:latest myjenkens:5.5
    新增了一个版本,但是它的image_id都是一样的,说明不是新增一个镜像。
  6. docker save busybox>busybox.tar
    当前已有镜像保存: docker save jenkins>myjenkins.tar
  7. docker load < busybox.tar.gz
    本地下载好.tar包,加载镜像:docker load <jenkins.tar

请使用http,不要用https,“No certs for egitstry.docker.com”。

docker 容器管理命令

  1. docker run jenkins
    通过一个镜像启动一个容器
    docker run -p 8080:8080 -p 50000:50000 jenkins
    端口映射,就是将宿主机的8080端口映射到容器的8080端口上。通过访问宿主机的8080端口,将请求转发到容器的8080端口
  1. docker ps
    列出所有正在运行的容器
  1. docker stop CONTAINER_Name
    停止容器

  2. docker rm CONTAINER_Name
    删除容器

  1. docker kill CONTAINER_Name
    杀死容器,不会等待容器结束

  2. docker run -d --name myjenkins -p 8080:8080
    前面讲了,Namespace技术,使得各个容器间网络隔离,无法通信,宿主机也无法使用,除非使用端口映射。
    端口映射,就是将宿主机的8080端口映射到容器的8080端口上。通过访问宿主机的8080端口,将请求转发到容器的8080端口
    127.0.0.1:8080可以访问jenkins
    需要初始密码,启动log docker logs -f有初始密码

  3. 数据卷(Data Volume)
    存在容器中的数据会随着容器的删除、节点有问题而丢失。这是我们不愿意看到的。希望在容器中保存的数据能够持久化出来。用数据卷可以解决这个问题。
    -v 宿主机目录:容器目录命令,把宿主机上的某个目录挂载容器上 ,容器文件目录也映射到宿主机,即使容器删除,文件也还是保存在宿主机上的。
    ps:注意挂载权限 sudo chown -R 1000:1000 /home/docker/jenkins

  4. docker info
    查看docker服务的信息

  5. docker inspect CONTAINER_Name
    查看容器元数据

与容器交互的命令

  1. docker exec
    是在容器中去执行一条命令
  1. ps aux|grep jenkins
    在容器中是看不到别的容器和宿主机的,但是docker留了一个口子,可以用宿主机看到容器。
  2. docker cp CONTAINER_Name:CONTAINER_PATH HOST_PATH
    把主机上的一个文件copy到容器中

拓展

联合文件系统:
x空间目录有A文件,Y空间目录有B文件,通过视图可以看到所有空间的所有文件,这个视图就是联合文件系统。这个视图里就要A、B文件。
在视图层中对A文件中加一行“hello”,同步到x空间中的A文件,在视图中对B文件中加一行“world”,在y空间并不会同步,而是在x空间记录“对B文件增加world这个字符串”,即记录对B文件的修改,原因是联合文件系统,只有链接的第一个目录有读写权限,其他目录只有读权限。
即无法修改的是镜像层,记录镜像层的修改是容器层,可以操作的是视图层。登录容器时,就是视图层。


把容器层叠加到镜像层,上层都是记录的对下层的修改。新的容器层继续记录对镜像层的修改。可以一直叠加。所以删除镜像时,是删除多层镜像,是一层一层删除的。

制作镜像

  1. 制作镜像的命令:docker commit myjenkins myjenkins:5.5
    制作新的命名为myjenkins的镜像,tag是5.5
  2. Dockerfile文件,docker官方推荐的制作镜像的方式

启动命令扩展

docker run -d --name myjenkins --net host jenkins
使用宿主机的网络启动jenkins

上一篇下一篇

猜你喜欢

热点阅读