root@DIAOAN:/# service docker restart * Stopping Docker: docker [ OK ] * Starting Docker: docker [ OK ] root@DIAOAN:/# docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly.
这样就算安装成功并且正常运行了.
容器使用
查看容器
使用docker ps命令查看容器
1 2 3
root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6685130cc957 ubuntu "bash" 6 minutes ago Up 6 minutes determined_hoover
使用docker ps -a查看所有容器,包括已经停止了的
1 2 3 4 5
root@DIAOAN:/# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6685130cc957 ubuntu "bash" 8 minutes ago Up 8 minutes determined_hoover 2e4b99549f80 ubuntu "bash" 9 minutes ago Exited (0) 9 minutes ago affectionate_easley 390684e4cb74 ubuntu "bash" 11 minutes ago Exited (0) 11 minutes ago busy_sutherland
启动容器
启动容器
1 2 3 4
# 启动一个ubuntu容器,但是什么都不做,容器一被创建就被关闭 root@DIAOAN:/# docker run ubuntu root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
启动交互的容器
1 2 3 4 5 6 7 8 9 10
# 启动并进入一个docker容器,但是退出后,容器就被关闭 root@DIAOAN:/# docker run -it ubuntu root@2e4b99549f80:/# ps PID TTY TIME CMD 1 pts/0 00:00:00 bash 9 pts/0 00:00:00 ps root@2e4b99549f80:/# exit exit root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
参数说明:
-i : interactive,交互式操作
-t : 分配一个与容器的stdin连接的伪TTY
启动后台容器
1 2 3 4 5 6
# 以后台方式运行容器 root@DIAOAN:/# docker run -itd ubuntu 6685130cc957bf5ecb88d2e0fb8a117fec58a9a5988238dab6649f848bd75262 root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6685130cc957 ubuntu "bash" 9 seconds ago Up 8 seconds determined_hoover
参数说明:
-d : detach,后台运行容器
启动已停止的容器
使用docker start启动一个停止的容器
1 2 3 4 5 6
# 使用docker start启动一个停止的容器,后面跟停止的容器的ID或名字 root@DIAOAN:/# docker start d5e95c09f750 d5e95c09f750 root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d5e95c09f750 ubuntu "bash" 4 minutes ago Up 10 seconds cranky_kalam
停止容器
使用docker stop停止容器
1 2 3 4 5 6 7
root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6685130cc957 ubuntu "bash" 12 minutes ago Up 12 minutes determined_hoover root@DIAOAN:/# docker stop 6685130cc957 6685130cc957 root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
重启容器
停止的容器可以通过docker restart重启
1 2 3 4 5 6 7 8 9 10 11 12
root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26bc34f9486d ubuntu "bash" 2 minutes ago Up 2 minutes ubuntu-test root@DIAOAN:/# docker stop 26bc34f9486d 26bc34f9486d root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES root@DIAOAN:/# docker restart 26bc34f9486d 26bc34f9486d root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26bc34f9486d ubuntu "bash" 2 minutes ago Up 2 seconds ubuntu-test
进入容器
在运行容器的时候如果使用了-d参数,容器启动时候会自动进入后台,这时想要进入容器,通过以下指令进入
docker attach : 如果从这个容器退出,会导致容器的停止
docker exec : 退出容器终端,不会导致容器的停止
使用attach命令
从这个容器退出,会导致容器的停止
1 2 3 4 5 6 7 8
root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26bc34f9486d ubuntu "bash" 5 minutes ago Up 2 minutes ubuntu-test root@DIAOAN:/# docker attach 26bc34f9486d root@26bc34f9486d:/# exit exit root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
使用exec命令
如果从这个容器退出,容器不会停止
1 2 3 4 5 6 7 8 9
root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26bc34f9486d ubuntu "bash" 8 minutes ago Up About a minute ubuntu-test root@DIAOAN:/# docker exec -it 26bc34f9486d /bin/bash root@26bc34f9486d:/# exit exit root@DIAOAN:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26bc34f9486d ubuntu "bash" 8 minutes ago Up About a minute ubuntu-test
导出和导入容器
导出容器
要导出本地某个容器,使用docker export
1 2 3
root@DIAOAN:/usr/dockers# docker export 26bc34f9486d > ubuntu.tar root@DIAOAN:/usr/dockers# ls -a . .. ubuntu.tar
导入容器
使用docker import导入
1 2 3 4 5 6 7
root@DIAOAN:/usr/dockers# cat ubuntu.tar | docker import - test/ubuntu:v1 sha256:f850ecc2f3ec813024c5d49d643021ac520777c11448e5297de4731085fb3ad2 root@DIAOAN:/usr/dockers# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v1 f850ecc2f3ec 3 seconds ago 72.8MB ubuntu latest 1318b700e415 8 days ago 72.8MB hello-world latest d1165f221234 5 months ago 13.3kB
删除容器
使用docker rm删除容器
1 2 3 4 5 6 7
root@DIAOAN:/usr/dockers# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26bc34f9486d ubuntu "bash" 31 minutes ago Up 24 minutes ubuntu-test root@DIAOAN:/usr/dockers# docker rm -f 26bc34f9486d 26bc34f9486d root@DIAOAN:/usr/dockers# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@DIAOAN:/# docker top 34f69064b025 UID PID PPID C STIME TTY TIME CMD root 1302 1282 0 01:47 pts/0 00:00:00 bash
镜像使用
列出镜像
使用docker images列出本地所有镜像
1 2 3 4 5
root@DIAOAN:/# docker images REPOSITORY TAG IMAGE ID CREATED SIZE node latest 1d88d89c7230 11 hours ago 907MB ubuntu latest 1318b700e415 8 days ago 72.8MB hello-world latest d1165f221234 5 months ago 13.3kB
获取镜像
可以使用docker pull获取新的镜像
1 2 3 4 5 6 7 8 9 10 11 12
root@DIAOAN:/# docker pull ubuntu:13.10 13.10: Pulling from library/ubuntu Image docker.io/library/ubuntu:13.10 uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/ a3ed95caeb02: Pull complete 0d8710fc57fd: Pull complete 5037c5cd623d: Pull complete 83b53423b49f: Pull complete e9e8bd3b94ab: Pull complete 7db00e6b6e5e: Pull complete Digest: sha256:403105e61e2d540187da20d837b6a6e92efc3eb4337da9c04c191fb5e28c44dc Status: Downloaded newer image for ubuntu:13.10 docker.io/library/ubuntu:13.10
root@DIAOAN:~/dockers# vim Dockerfile FROM ubuntu MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D root@DIAOAN:~/dockers# docker build -t test .
参数说明:
-t : 创建的目标镜像名
. : Dockerfile的文件目录
这时可以看到新创建的镜像
1 2 3
root@DIAOAN:~/dockers# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test latest 18a0ee0176cf 2 minutes ago 73.1MB
容器连接
网络端口映射
在运行容器时,使用-p或-P来指定容器端口绑定到主机端口
-P : 是容器内部端口随机映射到主机的端口。
-p : 是容器内部端口绑定到指定的主机端口。
1 2 3 4 5 6
# 将容器的80端口绑定到宿主的10000端口 [root@VM-20-10-centos ~]# docker run -d -p 10000:80 xiaoban 971241ee4519e06ea10d83d145eeb6d18e0dd79d3f4864251a6526a0ccf22151 [root@VM-20-10-centos ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 971241ee4519 xiaoban "docker-entrypoint.s…" 5 seconds ago Up 5 seconds 0.0.0.0:10000->80/tcp, :::10000->80/tcp silly_keller
Docker容器互联
新建Docker网络
使用docker network新建网络
1 2 3 4 5 6 7 8
root@DIAOAN:~/dockers# docker network create -d bridge test-net a91712d7878203de0d8f9b98fd1e3fdfc33349113d126406f7f7082f51e8432b root@DIAOAN:~/dockers# docker network ls NETWORK ID NAME DRIVER SCOPE 14a9d6753056 bridge bridge local 0e13bb47c88d host host local 2b9de7c88d22 none null local a91712d78782 test-net bridge local
-d:网络类型,有bridge和overlay
新建两个容器并连接到新建的网络
1 2 3 4 5 6 7 8
root@DIAOAN:~/dockers# docker run -itd --name test1 --network test-net ubuntu /bin/bash 73caea235919a692b7a8f5a3b9c59e63ba8cb71c5d8e69c2581f2fe3e243c53e root@DIAOAN:~/dockers# docker run -itd --name test2 --network test-net ubuntu /bin/bash 5e267e3593199c690dfc7fe76ec3cf241f2d104bc90f1eac3bb8a1f7a7063e7c root@DIAOAN:~/dockers# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5e267e359319 ubuntu "/bin/bash" 18 seconds ago Up 17 seconds test2 73caea235919 ubuntu "/bin/bash" 23 seconds ago Up 21 seconds test1
进入test1,ping test2
1 2 3 4 5 6
root@DIAOAN:~/dockers# docker exec -it 5e267e359319 /bin/bash root@5e267e359319:/# ping test2 PING test2 (172.18.0.3) 56(84) bytes of data. 64 bytes from 5e267e359319 (172.18.0.3): icmp_seq=1 ttl=64 time=0.018 ms 64 bytes from 5e267e359319 (172.18.0.3): icmp_seq=2 ttl=64 time=0.040 ms 64 bytes from 5e267e359319 (172.18.0.3): icmp_seq=3 ttl=64 time=0.040 ms
[root@VM-20-10-centos ~]# curl localhost:5000 Hello World! I have been seen 1 times. [root@VM-20-10-centos ~]# curl localhost:5000 Hello World! I have been seen 2 times. [root@VM-20-10-centos ~]# curl localhost:5000 Hello World! I have been seen 3 times.