docker
参考网址
https://www.runoob.com/docker/docker-install-ubuntu.html
-菜鸟教程
https://www.cnblogs.com/yufeng218/p/8370670.html
-centOS7 安装docker
https://www.hangge.com/blog/cache/detail_2411.html
-本地镜像的导入导出
https://www.cnblogs.com/wholj/p/10551999.html
-docker端口映射
dockor入门案例
Hello world
runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world" Hello world
docker: Docker 的二进制执行文件。
run: 与前面的 docker 组合来运行一个容器。
ubuntu:15.10 指定要运行的镜像
Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令
运行交互式的容器
runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash root@0123ce188bd8:/#
-t: 在新容器内指定一个伪终端或终端
-i: 允许你对容器内的标准输入 (STDIN) 进行交互
注意第二行 root@0123ce188bd8:/#,此时我们已进入一个 ubuntu15.10 系统的容器
查看当前系统的版本信息
root@0123ce188bd8:/# cat /proc/version Linux version 4.4.0-151-generic (buildd@lgw01-amd64-043) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #178-Ubuntu SMP Tue Jun 11 08:30:22 UTC 2019
当前目录下的文件列表
root@0123ce188bd8:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@0123ce188bd8:/#
退出容器
root@0123ce188bd8:/# exit
exit
root@runoob:~#
可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。
启动停止容器(后台模式)
运行容器
runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
在输出中,我们没有看到期望的 "hello world",而是一串长字符
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。
查看容器及状态
runoob@runoob:~$ docker ps CONTAINER ID IMAGE COMMAND ... 5917eac21c36 ubuntu:15.10 "/bin/sh -c 'while t…" ...
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
created(已创建)
restarting(重启中)
running 或 Up(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
查看容器内的标准输出
runoob@runoob:~$ docker logs 2b1b7a428627
停止容器
runoob@runoob:~$ docker stop
runoob@runoob:~$ docker ps
Docker 容器使用
Docker 客户端
查看到 Docker 客户端的所有命令选项
runoob@runoob:~# docker
可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
如:
runoob@runoob:~# docker stats --help
容器使用
获取镜像
本地没有 ubuntu 镜像 可以使用 docker pull 命令来载入 ubuntu 镜像
$ docker pull ubuntu
启动容器
使用 ubuntu 镜像启动一个容器
参数为以命令行模式进入该容器
$ docker run -it ubuntu /bin/bash
容器命名
docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器
$ docker run -it --name runoob ubuntu /bin/bash
退出终端
root@ed09e4490c57:/# exit
查看所有的容器
$ docker ps -a
启动一个已停止的容器
$ docker start b750bbbcfd88
容器后台运行
可以过 -d 指定容器的运行模式(后台运行)
加了 -d 参数默认不会进入容器
docker run -itd --name ubuntu-test ubuntu /bin/bash
停止一个容器
$ docker stop <容器 ID>
重启容器
$ docker restart <容器 ID>
进入容器
在使用 -d 参数时,容器启动后会进入后台。
docker attach <容器 ID>(不推荐)
注意: 如果从这个容器退出,会导致容器的停止。
docker exec(推荐)
如果从这个容器退出,容器不会停止
docker exec -it 243c32535da7 /bin/bash
删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rm -f db01 db02
镜像的使用
导出镜像
这样将导出容器快照到本地文件
$ docker export 1e560fca3906 > ubuntu.tar
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1
导入镜像
docker import - 镜像名称:镜像标签 < 导出的镜像
$ docker import - new_hangger_server:V1 < ubuntu.tar
列出本地镜像
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一个仓库源可以有多个TAG,代表这个仓库源的不同版本
获取镜像
如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它
Crunoob@runoob:~$ docker pull ubuntu:13.10
删除镜像
$ docker rmi hello-world
容器的连接
网络端口映射
-P :是容器内部端口随机映射到主机的端口。
-p : 是容器内部端口绑定到指定的主机端口。
指定容器端口、宿主端口和ip
$ docker run -it -d -p 127.0.0.1:5000:5000 ubuntu /bin/bash
适用于映射到指定地址的指定端口 eg:将容器的5000端口映射到指定地址127.0.0.1的5000端口上
指定容器端口、宿主ip
$ docker run -it -d -p 127.0.0.1::4000 docker.io/centos:latest /bin/bash
适用于映射到指定地址的任意端口 eg:将容器的4000端口映射到127.0.0.1的任意端口上:
指定宿主端口、容器端口
$ docker run -itd -p 8000:80 docker.io/centos:latest /bin/bash
适用于将容器指定端口指定映射到宿主机的一个端口上(映射所有接口地址) eg:将容器的80端口映射到宿主机的8000端口上:
查看映射配置
docker port CONTAINER_ID
$ docker port 2b1b7a428627
Docker 容器互联
docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。
docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。
新建网络
$ docker network create -d bridge test-net
-d:参数指定 Docker 网络类型,有 bridge、overlay
overlay 网络类型用于Swarm mode
查看网络
$ docker network ls
连接容器
运行容器并连接到新建的 test-net 网络
$ docker run -itd --name test1 --network test-net ubuntu /bin/bash
$ docker run -itd --name test2 --network test-net ubuntu /bin/bash
ping 来证明 test1 容器和 test2 容器建立了互联关系
如果 test1、test2 容器内中无 ping 命令
apt-get update
apt install iputils-ping
查看容器所有状态信息
docker inspect id/NAMES # 查看容器所有状态信息; docker inspect --format='{{.NetworkSettings.IPAddress}}' ID/NAMES# 查看 容器ip 地址 docker inspect --format '{{.Name}} {{.State.Running}}' NAMES# 容器运行状态
容器本地目录挂载
docker run -it -v /home/dock/:/home/mount/ --name first ubuntu:16.04 bin/bash
容器文件的拷贝
将容器中的文件复制到主机
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的路径
docker cp first:/usr/local/tomcat/webapps/test/js/test.js /opt
将主机的文件复制到容器中
docker cp 主机的文件路径 容器名:要拷贝的文件在容器里面的路径
docker cp /root/init.sh CS5_AS_EALL1:/home/hundsun/workspace/log