docker1
Docker笔记
菜鸟笔记:https://www.runoob.com/docker/centos-docker-install.html
1,
https://gitlab-demo.com
Docker官网:https://docs.docker.com/install/overview/
有两个版本:
Docker is available in two editions:
- Community Edition (CE) 是免费的版本
- Enterprise Edition (EE) 是收费的版本
vagrant 安装 centos 7
vagrant + virtualBOX 安装
https://my.oschina.net/cxgphper/blog/1940644
安装Docker
系统centos7
https://docs.docker.com/install/linux/docker-ce/centos/
也可以在vagrantfile中添加安装docker shell
Vagrant up
Docker machine 在本地使用
#docker-machine create demo
Docker-machine ls
Docker-machine ssh demo 进入虚机demo
Docker-machine stop demo1
Docer-machine env demo #print出dome虚机的env
#eval $(docker-machine env demo)
#docker version #可以看到demo的虚机docker版本
搜索docker playground
https://labs.play-with-docker.com/
在 https://www.docker.com/
Docker for windows7/windows10安装 以及Docker id注册
https://blog.csdn.net/xzxedu/article/details/82012297
参考docker
https://www.jianshu.com/p/38649ff222ac
引导入门:
https://blog.csdn.net/sD7O95O/article/details/80193587
[root@zizhen02 ~]# ps -ef |grep docker
root 7661 1 0 14:49 ? 00:00:03 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 9829 9790 0 16:32 pts/1 00:00:00 grep --color=auto docker
[root@zizhen02 ~]#
#sudo docker image ls
官方给出image获取的 Docker Hub
https://hub.docker.com/search?q=&type=image
去掉sudo:
把vagrant 添加到组docker 里
#sudo groupadd docker
#sudo gpasswd -a vagrant docker
#docker version 权限还是拒绝
#sudo service docker restart 重启docker服务
#docker version
退出重新登。
#docker image ls
#docker pull hello-world 获取hello-world镜像
#docker run hello-world 运行
#mkdir hello-world
#cd hello-world
#vim hello.c
-----
#include<stdio.h>
int main()
{
printf("hello docker\n");
}
-----
#yum install gcc glibc-static
# gcc -static hello.c -o hello
[root@zizhen02 hello-world]# ls
hello hello.c
# cat Dockerfile
FROM scratch
ADD hello /
CMD ['/hello']
[root@zizhen02 hello-world]# docker build -t xiaoli163/hello-world .
Sending build context to Docker daemon 860.7kB
Step 1/3 : FROM scratch
--->
Step 2/3 : ADD hello /
---> d3ce8749b11d
Step 3/3 : CMD ['/hello']
---> Running in 4d72aa29e7a3
Removing intermediate container 4d72aa29e7a3
---> a821094d0306
Successfully built a821094d0306
Successfully tagged xiaoli163/hello-world:latest
[root@zizhen02 hello-world]#
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaoli163/hello-world latest a821094d0306 37 seconds ago 857kB
ubuntu 14.04 5dbc3f318ea5 6 weeks ago 188MB
hello-world latest fce289e99eb9 2 months ago 1.84kB
centos latest 1e1148e4cc2c 3 months ago 202MB
[root@zizhen02 hello-world]#
[root@zizhen02 hello-world]# ls -lh
total 848K
-rw-r--r-- 1 root root 40 Mar 11 23:02 Dockerfile
-rwxr-xr-x 1 root root 837K Mar 11 22:55 hello
-rw-r--r-- 1 root root 64 Mar 11 22:48 hello.c
[root@zizhen02 hello-world]#
#查看docker的分层
[root@zizhen02 hello-world]# docker history a821094d0306
IMAGE CREATED CREATED BY SIZE COMMENT
a821094d0306 4 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "['/h… 0B
d3ce8749b11d 4 minutes ago /bin/sh -c #(nop) ADD file:68a0159a95ced5415… 857kB
[root@zizhen02 hello-world]#
报错:
[root@zizhen02 hello-world]# docker run xiaoli163/hello-world
docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown.
Docker组件container
查看所有运行的容器# docker container ls
[root@zizhen02 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97b6ec615252 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 0.0.0.0:8001->80/tcp nginxv2
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 192.168.1.107:8000->80/tcp mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:32768->80/tcp condescending_wilbur
查看镜像#docker images
[root@zizhen02 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaoli163/hello-world latest a821094d0306 18 hours ago 857kB
nginx latest 881bd08c0b08 7 days ago 109MB
ubuntu 14.04 5dbc3f318ea5 6 weeks ago 188MB
hello-world latest fce289e99eb9 2 months ago 1.84kB
centos latest 1e1148e4cc2c 3 months ago 202MB
查看所有的容器,包括运行、未运行、退出的所有容器#docker container ls -a
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97b6ec615252 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 0.0.0.0:8001->80/tcp nginxv2
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 192.168.1.107:8000->80/tcp mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:32768->80/tcp condescending_wilbur
058aa0c78e3d xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created goofy_gagarin
2383acd50abe xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created loving_franklin
3dcf3c566c78 xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created inspiring_antonelli
4a62f05f9141 hello-world "/hello" 20 hours ago Exited (0) 20 hours ago flamboyant_ellis
7327630800a1 hello-world "/hello" 2 days ago Exited (0) 2 days ago infallible_chatelet
[root@zizhen02 ~]#
通过交换模式进入docker :#docker run -it contos
[root@zizhen02 ~]# docker run -it centos
[root@db568adf5c1f /]#
[root@db568adf5c1f /]#
[root@db568adf5c1f /]# ip a
bash: ip: command not found
[root@db568adf5c1f /]# ip add li
bash: ip: command not found
[root@db568adf5c1f /]# ip link show
bash: ip: command not found
[root@db568adf5c1f /]# ip
bash: ip: command not found
[root@db568adf5c1f /]# ifconfig
bash: ifconfig: command not found
[root@db568adf5c1f /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@db568adf5c1f /]# vim
bash: vim: command not found
[root@db568adf5c1f /]# vi
[root@zizhen02 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db568adf5c1f centos "/bin/bash" About a minute ago Up About a minute amazing_herschel
97b6ec615252 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 0.0.0.0:8001->80/tcp nginxv2
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 192.168.1.107:8000->80/tcp mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:32768->80/tcp condescending_wilbur
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db568adf5c1f centos "/bin/bash" About a minute ago Up About a minute amazing_herschel
97b6ec615252 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 0.0.0.0:8001->80/tcp nginxv2
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 192.168.1.107:8000->80/tcp mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:32768->80/tcp condescending_wilbur
058aa0c78e3d xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created goofy_gagarin
2383acd50abe xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created loving_franklin
3dcf3c566c78 xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created inspiring_antonelli
4a62f05f9141 hello-world "/hello" 20 hours ago Exited (0) 20 hours ago flamboyant_ellis
7327630800a1 hello-world "/hello" 2 days ago Exited (0) 2 days ago infallible_chatelet
[root@zizhen02 ~]#
Docker退出,容器退出
[root@db568adf5c1f /]# exit
exit
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db568adf5c1f centos "/bin/bash" 8 minutes ago Exited (1) 29 seconds ago amazing_herschel
删除退出未运行的容器;删除运行的容器会报错;
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db568adf5c1f centos "/bin/bash" 13 minutes ago Exited (1) 5 minutes ago amazing_herschel
97b6ec615252 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 0.0.0.0:8001->80/tcp nginxv2
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 192.168.1.107:8000->80/tcp mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:32768->80/tcp condescending_wilbur
058aa0c78e3d xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created goofy_gagarin
2383acd50abe xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created loving_franklin
3dcf3c566c78 xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created inspiring_antonelli
4a62f05f9141 hello-world "/hello" 20 hours ago Exited (0) 20 hours ago flamboyant_ellis
7327630800a1 hello-world "/hello" 2 days ago Exited (0) 2 days ago infallible_chatelet
删除容器:docker rm 4a (可以区分容器id就可以删除,也可以全部的container ID)
[root@zizhen02 ~]# docker rm 4a
4a
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db568adf5c1f centos "/bin/bash" 13 minutes ago Exited (1) 5 minutes ago amazing_herschel
97b6ec615252 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 0.0.0.0:8001->80/tcp nginxv2
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 192.168.1.107:8000->80/tcp mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:32768->80/tcp condescending_wilbur
058aa0c78e3d xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created goofy_gagarin
2383acd50abe xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created loving_franklin
3dcf3c566c78 xiaoli163/hello-world "/bin/sh -c ['/hello…" 18 hours ago Created inspiring_antonelli
7327630800a1 hello-world "/hello" 2 days ago Exited (0) 2 days ago infallible_chatelet
[root@zizhen02 ~]# docker rm 7327
7327
[root@zizhen02 ~]#
#docker rm [container] 删除container
删除镜像用# docker rmi [镜像ID]
#docker rmi [image] 删除image
[root@zizhen02 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaoli163/hello-world latest a821094d0306 19 hours ago 857kB
nginx latest 881bd08c0b08 7 days ago 109MB
ubuntu 14.04 5dbc3f318ea5 6 weeks ago 188MB
hello-world latest fce289e99eb9 2 months ago 1.84kB
centos latest 1e1148e4cc2c 3 months ago 202MB
[root@zizhen02 ~]# docker rmi fce289e99eb9
Untagged: hello-world:latest
Untagged: hello-world@sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
Deleted: sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3
[root@zizhen02 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaoli163/hello-world latest a821094d0306 19 hours ago 857kB
nginx latest 881bd08c0b08 7 days ago 109MB
ubuntu 14.04 5dbc3f318ea5 6 weeks ago 188MB
centos latest 1e1148e4cc2c 3 months ago 202MB
[root@zizhen02 ~]#
运行中的container 先#docker container stop [id] 停止; 再删除image
[root@zizhen02 ~]# docker container
Usage: docker container COMMAND
Manage containers
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
exec Run a command in a running container
export Export a container's filesystem as a tar archive
inspect Display detailed information on one or more containers
kill Kill one or more running containers
logs Fetch the logs of a container
ls List containers
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
prune Remove all stopped containers
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
run Run a command in a new container
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
Run 'docker container COMMAND --help' for more information on a command.
[root@zizhen02 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97b6ec615252 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 0.0.0.0:8001->80/tcp nginxv2
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 192.168.1.107:8000->80/tcp mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:32768->80/tcp condescending_wilbur
[root@zizhen02 ~]# docker container stop 97b6ec615252
97b6ec615252
[root@zizhen02 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 192.168.1.107:8000->80/tcp mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:32768->80/tcp condescending_wilbur
[root@zizhen02 ~]# docker container stop 5c 2c
5c
2c
[root@zizhen02 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@zizhen02 ~]#
批量删除container
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
db568adf5c1f centos "/bin/bash" 29 minutes ago Exited (1) 21 minutes ago amazing_herschel
97b6ec615252 nginx "nginx -g 'daemon of…" 2 hours ago Exited (0) 5 minutes ago nginxv2
5cb5e2fb6d11 nginx "nginx -g 'daemon of…" 2 hours ago Exited (0) 5 minutes ago mynginx
2ce4f13ed654 nginx "nginx -g 'daemon of…" 2 hours ago Exited (0) 5 minutes ago condescending_wilbur
-q参数可以列出container id
[root@zizhen02 ~]# docker container ls -aq
db568adf5c1f
97b6ec615252
5cb5e2fb6d11
2ce4f13ed654
[root@zizhen02 ~]# docker container ls -a| awk {'print $1'}
CONTAINER
db568adf5c1f
97b6ec615252
5cb5e2fb6d11
2ce4f13ed654
通过-q参数进行批量删除container
[root@zizhen02 ~]# docker rm $(docker container ls -aq)
db568adf5c1f
97b6ec615252
5cb5e2fb6d11
2ce4f13ed654
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@zizhen02 ~]#
比较复杂的删除container
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e58877cb380a nginx "nginx -g 'daemon of…" 30 seconds ago Exited (0) 11 seconds ago agitated_bartik
[root@zizhen02 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
列出状态等于退出的容器:#docker container ls -f "status=exited"
[root@zizhen02 ~]# docker container ls -f "status=exited"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e58877cb380a nginx "nginx -g 'daemon of…" About a minute ago Exited (0) About a minute ago agitated_bartik
列出状态等于退出的容器的ID:#docker container ls -f "status=exited" -q
[root@zizhen02 ~]# docker container ls -f "status=exited" -q
e58877cb380a
列出状态等于退出的容器的ID并删除:#docker rm $(docker container ls -f "status=exited" -q)
[root@zizhen02 ~]# docker rm $(docker container ls -f "status=exited" -q)
e58877cb380a
[root@zizhen02 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@zizhen02 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@zizhen02 ~]#