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”: 在启动的容器里执行的命令
docker 的两个参数 -i -t,让 docker 运行的容器实现**“对话”**的能力
runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash root@0123ce188bd8:/#
各个参数解析:
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
启动容器(后台模式)runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63命令
1.帮助命令 docker command --help 2.查看容器 docker ps -a 2.查看log docker logs [CONTAINER ID]/[NAME] -f 4.启动容器 docker start [CONTAINER ID]/[NAME] 5.停止容器 docker stop [CONTAINER ID]/[NAME] 6.后台运行 docker run -itd --name ubuntu-test ubuntu /bin/bash 7.重启容器 docker restart [CONTAINER ID]/[NAME] 8.进入容器 docker attach [CONTAINER ID]/[NAME] docker exec -it [CONTAINER ID]/[NAME] /bin/bash [推荐] 9.导出和导入容器 docker export [CONTAINER ID] > ubuntu.tar cat docker/ubuntu.tar | docker import - test/ubuntu:v1 docker import http://example.com/exampleimage.tgz example/imagerepo 10.删除容器 docker rm -f [CONTAINER ID] 11.运行一个 web 应用 docker run -d -P training/webapp python app.py docker run -d -p 5000:5000 training/webapp python app.py 12.查看网络端口 docker port [CONTAINER ID]/[NAME] 13.移除WEB应用容器 docker rm [CONTAINER ID]/[NAME]2.镜像使用
1.列出所有镜像 docker images 2.获取一个新的镜像 docker pull 3.查找镜像 docker search 4.删除镜像 docker rmi 5.创建镜像 (1)更新镜像 容器内使用 apt-get update docker commit -m="has update" -a="runoob" [CONTAINER ID] runoob/ubuntu:v2 (2)构建镜像 cat Dockerfile docker build 6.设置镜像标签 ocker tag [CONTAINER ID] runoob/centos:dev3.容器连接
1.容器命名
docker -name
2.新建网络
docker network create -d bridge test-net
3.连接容器
docker run -itd --name test1 --network test-net ubuntu /bin/bash
4.配置 DNS
/etc/docker/daemon.json
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
5.手动指定容器的配置
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu
--rm:容器退出时自动清理容器内部的文件系统。
-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。
4.Dockerfile
FROM 构建镜像基于哪个镜像 MAINTAINER 镜像维护者姓名或邮箱地址 RUN 构建镜像时运行的指令 CMD 运行容器时执行的shell环境 VOLUME 指定容器挂载点到宿主机自动生成的目录或其他容器 USER 为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户 WORKDIR 为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录 HEALTHCHECH 健康检查 ARG 构建时指定的一些参数 EXPOSE 声明容器的服务端口(仅仅是声明) ENV 设置容器环境变量 ADD 拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压 COPY 拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能 ENTRYPOINT 运行容器时执行的shell命令
route add -p 172.17.0.0 mask 255.255.0.0 192.168.1.15[linux ip]Docker网络配置 docker的网络(bridge,host,none)
docker network ls
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
docker run -itd --name nginx-test --network my_net1 -p 8081:80 -v /usr/local/nginx/www:/usr/share/nginx/html -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/conf.d:/etc/nginx/conf.d -v /usr/local/nginx/logs:/var/log/nginx nginx
docker run -itd --name tomcat-test --network my_net1 -p 8081:8080 -v /usr/tomcat/tomcat1/webapps:/usr/local/tomcat/tomcat1/webapps tomcat
docker run -it -p 3306:3306 --name mysql01 --network my_net1 -v /usr/local/mysql_data/conf:/etc/mysql/conf.d -v /usr/local/mysql_data/data:/var/lib/mysql -v /usr/local/mysql_data/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker run -it --privileged=true --network my_net1 --name redis-test -p 6379:6379 -v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data -d redis:4.0 redis-server /etc/redis/redis.conf --appendonly yes



