安装
sudo apt install docker.io
sudo groupdel docker
docker run hello-world
docker proxy
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
写入: Environment="HTTP_PROXY=http://proxy.statestr.com:80/" "NO_PROXY=localhost,127.0.0.1"
sudo systemctl daemon-reload
systemctl show --property=Environment docker
sudo systemctl restart docker
docker run hello-world
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
docker images hello-world
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest e38bc07ac18e 4 weeks ago 1.85 kB
docker 相关操作
镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。\
docker image ls #列出相关镜像
docker image ls --digests #镜像详细摘要
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest e38bc07ac18e 4 weeks ago 1.85 kB
其中size是 Docker Hub 解压后的大小。而且docker image ls 列表中的镜像体积总和并非是所有镜像实际硬盘消耗。由于 Docker 镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。由于 Docker 使用 Union FS,相同的层只需要保存一份即可,因此实际镜像硬盘占用空间很可能要比这个列表镜像大小的总和要小的多。
docker image rm [选项] <镜像1> [<镜像2> ...] #删除镜像
容器
docker run -it --rm ubuntu:16.04 bash #交互方式运行容器 --rm参数表示容器退出就删除
docker run --name [containerName] -d -p 80:80 [imageName]
docker container ls #显示容器列表
docker container ls -a #显示所有容器包括已经退出的和停止的
docker exec -it webserver bash #容器交互 run 新创建,已经创建过的container里面用 exec
docker diff webserver #显示容器存储层内容改变
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
docker commit --author "Tianbo" --message "change docker index" webserver nginx:webserverv2
######慎用 docker commit
当前层外,之前的每一层都是不会发生改变的,换句话说,任何修改的结果仅仅是在当前层进行标记、添加、修改,而不会改动上一层。如果使用 docker commit 制作镜像,以及后期修改的话,每一次修改都会让镜像更加臃肿一次,所删除的上一层的东西并不会丢失,会一直如影随形的跟着这个镜像,即使根本无法访问到。这会让镜像更加臃肿。
网友评论