Docker学习
来源:互联网 发布:嵌入式网络编程 编辑:程序博客网 时间:2024/06/05 02:04
一、安装Docker
1.1、环境:centos7
[twx@localhost ~]$ uname -aLinux localhost.localdomain 3.10.0-327.28.2.el7.x86_64 #1 SMP Wed Aug 3 11:11:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
安装命令:sudo yum install -y docker
启动守护进程:sudo service docker start
[twx@localhost ~]$ sudo service docker startRedirecting to /bin/systemctl start docker.service[twx@localhost ~]$ sudo service docker statusRedirecting to /bin/systemctl status docker.service● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since 一 2016-08-08 15:27:30 CST; 25s ago Docs: http://docs.docker.com
二、Docker入门
2.1、检查docker程序信息
sudo docker info
该命令会返回所有容器和镜像的数量以及其他一些信息
2.2 创建容器
sudo docker run -i -t ubuntu /bin/bash
ubuntu 镜像名称
-i 标志保证容器中得STDIN(标准输入)是开启的
-t 为容器分配一个伪tty终端
ubuntu镜像是一个基础镜像(base image)。输入docker run命令时,会首先在本地检查是否存在ubuntu镜像,如果没有,就从远程仓库pull到本地,然后再根据此镜像创建容器。
[twx@localhost ~]$ sudo docker run -i -t ubuntu /bin/bashUnable to find image 'ubuntu:latest' locallyTrying to pull repository docker.io/library/ubuntu ... latest: Pulling from docker.io/library/ubuntu43db9dbdcb30: Pull complete 2dc64e8f8d4f: Pull complete 670a583e1b50: Pull complete 183b0bfcd10e: Pull complete Digest: sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54bStatus: Downloaded newer image for docker.io/ubuntu:latestroot@eaa81433c057:/#
容器创建成功后,会在容器中运行/bin/bash命令,启动bash shell。
我们可以输入hostname
查看容器的名字
root@eaa81433c057:/# hostnameeaa81433c057
2.3、退出容器
exit
一旦退出容器,/bin/bash命令也就结束了,随之容器也就停止了运行。
2.4、查看容器列表
sudo docker ps
查看正在运行的容器 sudo docker ps -a
查看所有容器 sudo docker ps -l
查看最后一次运行的容器
2.5、容器命名
[twx@localhost ~]$ sudo docker run --name twx_the_container -i -t ubuntu /bin/bashroot@ea5e6646e432:/#
通过–name+ 名称 就能创建一个指定名称的容器了。
2.6、启动/停止容器
sudo docker start/stop + 容器名称
[twx@localhost ~]$ sudo docker start twx_the_containertwx_the_container[twx@localhost ~]$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESea5e6646e432 ubuntu "/bin/bash" 3 minutes ago Up 34 seconds twx_the_container
2.7、docker attach
2.8、创建守护式容器
[twx@localhost ~]$ sudo docker run --name daemon_dave -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 1;done;"[sudo] password for twx: 0df0744b2f405a4b79c55f574f37331dd0f8c7cdafe23903a82b04a272961e41
-d 将容器放到后台运行
2.9、查看容器内部日志
sudo docker logs + 容器名称
2.10、查看容器内部进程
sudo docker top+容器名称
sudo docker top daemon_daveUID PID PPID C STIME TTY TIME CMDroot 9014 5145 0 16:11 ? 00:00:00
2.11、在容器内部运行进程
sudo docker exec + 参数+容器名称+命令
[twx@localhost ~]$ sudo docker exec -i -t daemon_dave /bin/bash root@0df0744b2f40:/#
2.12、docker inspect
root@0df0744b2f40:/# sudo docker inspect daemon_davebash: sudo: command not foundroot@0df0744b2f40:/# exitexit[twx@localhost ~]$ sudo docker inspect daemon_dave[ { "Id": "0df0744b2f405a4b79c55f574f37331dd0f8c7cdafe23903a82b04a272961e41", "Created": "2016-08-08T08:11:37.29923545Z", "Path": "/bin/bash", "Args": [ "-c", "while true;do echo hello world;sleep 1;done;" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 9014, "ExitCode": 0, "Error": "", "StartedAt": "2016-08-08T08:11:37.950360729Z", "FinishedAt": "0001-01-01T00:00:00Z" }....
2.13、删除容器
sudo docker rm + 容器名称
运行中得docker容器是无法删除的。
三、使用Docker镜像和仓库
3.1、Docker的概念
自行Google
3.2、列出镜像
sudo docker images
本地镜像都保存在Docker宿主机的/var/lib/docker目录下。
3.3 拉取镜像
sudo docker pull +仓库名称/镜像名称
可以在仓库名后面加上一个冒号和标签名来指定该仓库中的某一镜像。
3.4 查找镜像
sudo docker search + 镜像名
[twx@localhost ~]$ sudo docker search shadowsocksINDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATEDdocker.io docker.io/oddrationale/docker-shadowsocks shadowsocks Docker image 86 [OK]docker.io docker.io/tommylau/shadowsocks 44 [OK]docker.io docker.io/vimagick/shadowsocks-libev A lightweight secured socks5 proxy for emb... 38 [OK]docker.io docker.io/shadowsocks/shadowsocks-libev 26 [OK]docker.io docker.io/vimagick/shadowsocks A secure socks5 proxy, designed to protect... 9 [OK]docker.io docker.io/menghan/shadowsocks shadowsocks server 6 [OK]docker.io docker.io/imlonghao/shadowsocks-libev A docker image for shadowsocks-libev 4 [OK]docker.io docker.io/frankzhang/shadowsocks-c A shadowsocks repo, https://github.com/zju... 2 [OK]docker.io docker.io/imlonghao/shadowsocks-python A docker image for shadowsocks-python 2 [OK]docker.io docker.io/baselibrary/shadowsocks shadowsocks 1 [OK]docker.io docker.io/bluebu/shadowsocks-privoxy shadowsocks client for socks5 proxy privox... 1 [OK]docker.io docker.io/chenzhiwei/shadowsocks Shadowsocks socket proxy. (Image size 77M) 1 [OK]docker.io docker.io/gaoyifan/shadowsocks-manyuser shadowsocks manyuser 1 [OK]
3.5、构建镜像
构建镜像有两种方式:
1. commit
2. 使用docker build命令 和Dockerfile 文件
3.5.1 使用docker commit命令
- 登陆docker 账户
[twx@localhost ~]$ sudo docker loginUsername (slimteaegg): slimteaeggPassword: WARNING: login credentials saved in /root/.docker/config.jsonLogin Succeeded
- 进入刚创建的twx_the_container容器内部
sudo docker attach twx_the_container
- 接着更新一下apt包
root@ea5e6646e432:/# apt-get -y update
- 安装apache2
apt-get -y install apache2
- 退出容器,提交容器到我们的个人仓库
sudo docker commit twx_the_container slimteaegg/apache2
- 查看一下镜像列表
sudo docker images
[twx@localhost ~]$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEslimteaegg/apache2 latest 7c048d3857dd 8 seconds ago 262.7 MBdocker.io/ubuntu latest 42118e3df429 2 weeks ago 124.8 MB
3.5.2、使用Dockerfile构建镜像
- 创建Dockerfile文件
mkdir static_webcd static_webtouch Dockerfile
- 编辑Dockerfile
#Version:0.0.1FROM ubuntu:latestMAINTAINER Tangwenxing "twx843571091@gmail.com"RUN apt-get updateRUN apt-get install -y nginxRUN echo 'Hi,this is a test image' > /usr/share/nginx/html/index.htmlEXPOSE 80
FROM:指定一个已经存在的镜像,后续指令都基于该镜像进行
MAINTAINER: 指定该镜像的作者以及作者的电子邮箱
RUN: 在当前镜像中运行指定的命令
EXPOSE:指定容器的端口。出于安全原因,Docker并不会自动打开该端口,而是需要在docker run 时指定需要打开哪些端口。
- 开始执行构建命令
cd static_websudo docker build -t="slimteaegg/static_web" .
-t 为新镜像设定仓库和名称
该命令最后的.告诉Docker到本地目录中去找Dockerfile文件
- 构建成功以后,查看一下镜像列表
[twx@localhost static_web]$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEslimteaegg/static_web latest 7b096462ae9d 36 seconds ago 220.4 MBslimteaegg/apache2 latest 7c048d3857dd 13 minutes ago 262.7 MBdocker.io/ubuntu latest 42118e3df429 2 weeks ago 124.8 MB
3.6、基于新构建的镜像启动容器
[twx@localhost static_web]$ sudo docker run -d -p 80 --name static_web slimteaegg/static_web nginx -g "daemon off;"2c8e63093254bf1c34814ea8af97861940cf069aa63ff5114fc0116952e0a514
-d 告诉docker以分离(Detached)的方式在后台运行
-p 的用法有几种:
1.-p + 端口号 宿主机随机分配一个端口映射到容器端口号上
2. -p 8080:80 将宿主机的8080端口映射到容器80端口上。
Docker提供了一种更简单的方式,即-P参数。该参数可以用来对外公开在Dockerfile中得EXPOSE指令中设置的所有端口
sudo docker run -d -P --name static_web slimteaegg/static_web nginx -g "daemon off;"
该命令会将容器内的80端口对宿主机公开,并且绑定到宿主机的一个随机端口上。
3.6.1、docker port命令
docker port + 容器名+ 容器端口号
返回宿主机映射的端口号 [twx@localhost static_web]$ sudo docker port static_web 80
0.0.0.0:32768
3.7、Dockerfile指令
3.7.1、CMD
3.7.2、ENTRYPOINT
3.7.3、WORKDIR
3.7.4、ENV
3.7.5、USER
3.7.6、VOLUME
3.7.7、ADD
3.7.9、ONBUILD
3.8、将镜像推送到Docker Hub
sudo docker push slimteaegg/static_web
- 【Docker】docker 学习
- docker学习
- Docker学习
- docker学习
- docker学习
- Docker学习
- docker学习
- docker学习
- docker学习
- Docker学习
- Docker 学习
- Docker学习
- docker学习
- Docker学习
- docker学习
- docker学习
- 学习docker
- Docker 学习
- ubuntu 15.04 系统中如何启用、禁用客人会话
- 数据结构实验之二叉树的建立与遍历
- 111
- App系列------如何把文件放到assets目录下
- [DP]Composite设计模式
- Docker学习
- Ural 2041 Nanomatryoshkas(贪心)
- Python Requests throwing up SSLError
- 树形DPpoj2152
- 设计模式-行为型-观察者模式(Observer)
- 并查集
- 移动前端知识总结
- Linux 下安装erlang
- WCF大数据量处理