dock安装

curl -sSL https://get.daocloud.io/docker | sh

docker-compose 安装

curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

systemctl start docker

 

1.显示本机的镜像列表

docker images

2. 拉取docker 镜像

从网易拉取镜像。
docker pull hub.c.163.com/public/nginx:1.2.1
3.查看获取到镜像
docker images


REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 4ab4c602aa5e 3 weeks ago 1.84kB
busybox latest e1ddd7948a1c 2 months ago 1.16MB
hub.c.163.com/library/nginx latest 46102226f2fd 17 months ago 109MB
hub.c.163.com/public/nginx 1.2.1 2dc68ff797db 2 years ago 171MB

4. 在后台运行docker

在后台运行镜像ID,-d 参数意思是在后台运行
docker run -d 2dc68ff797db

26dc06315762402a1d05e614061bc66272c59eb230d5030076c3eb067385c64a

5.查看后台运行的docker 容器。
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26dc06315762 2dc68ff797db "/bin/sh -c '/etc/..." 8 seconds ago Up 6 seconds 22/tcp, 80/tcp, 443/tcp yo

26dc06315762 为容器ID

6.进到容器内部

容器本身也是一个linux系统。

# docker exec -it 容器ID 需要执行的命令
docker exec -it 26dc06315762 bash

[root@localhost ~]# docker exec -it 26dc06315762 bash
root@26dc06315762:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var

root@26dc06315762:/# which nginx
/usr/sbin/nginx

查看容器内的进程。
root@26dc06315762:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:05 ? 00:00:00 /bin/sh -c /etc/init.d/nginx start && /usr/sbin/sshd -D
root 9 1 0 03:05 ? 00:00:00 nginx: master process /usr/sbin/nginx
root 10 1 0 03:05 ? 00:00:00 /usr/sbin/sshd -D
www-data 11 9 0 03:05 ? 00:00:00 nginx: worker process
www-data 12 9 0 03:05 ? 00:00:00 nginx: worker process
www-data 13 9 0 03:05 ? 00:00:00 nginx: worker process
www-data 14 9 0 03:05 ? 00:00:00 nginx: worker process
root 15 0 0 03:10 pts/0 00:00:00 bash
root 23 15 0 03:13 pts/0 00:00:00 ps -ef

使用exit 命令退出容器。

--停止容器
docker stop 26dc06315762

7.docker 端口映射

将容器的80 端口映射到本机的 8080 端口。
docker run -d -p 8080:80 2dc68ff797db
8260e229cd9dfe1d821f2033b2d690adf6ae491515c250a11b9e9a1029856d5c

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8260e229cd9d 2dc68ff797db "/bin/sh -c '/etc/..." About a minute ago Up About a minute 22/tcp, 443/tcp, 0.0.0.0:8080->80/tcp affectionate_dubinsky

[root@localhost ~]# netstat -na | grep 8080
tcp6 0 0 :::8080 :::* LISTEN

 

docker stop 8260e229cd9dfe1d821f2033b2d690adf6ae491515c250a11b9e9a1029856d5c

8.将容器所有的端口映射到本地的随机端口
[root@localhost ~]# docker run -d -P 2dc68ff797db
79d98946edcd7a8d6a0e4fdb3a9b3556103b6a2cbdd484bbe253e53130989826
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79d98946edcd 2dc68ff797db "/bin/sh -c '/etc/..." 8 seconds ago Up 7 seconds 0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp

大写P是将容器的所有开放端口映射成本机的随机端口。 

9.volume 操作 

volume 这个可以帮组我们将 宿主机器的 目录挂载到容器的目录中去,这样不会应为容器重启出现文件丢失的情况。

1.docker run -v /usr/share/nginx/www -d -p 80:80 2dc68ff797db

使用参数-v 将容器的/usr/share/nginx/www 目录映射到宿主机的目录,具体是那个目录我们可以通过如下命令查看。

使用 docker ps 查看运行的容器ID。

使用 docker inspect 5d842062e63d 命令查看容器的信息

"Mounts": [
{
"Type": "volume",
"Name": "bcc82524af695a2984d14cb545fab3df800b3bb45bbd2e93f421b96cc77da34b",
"Source": "/var/lib/docker/volumes/bcc82524af695a2984d14cb545fab3df800b3bb45bbd2e93f421b96cc77da34b/_data",
"Destination": "/usr/share/nginx/www",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]

source 表示宿主容器的目录,我们进入到此目录,修改index.html文件,重新访问容器的服务,发现index.html 被修改。

使用命令进行卷映射.

2. docker run -v $PWD:/usr/share/nginx/www -d -p 80:80 2dc68ff797db

就是将宿主机的当前目录映射到 容器的/usr/share/nginx/www ,通过 docker inspect 容器ID访问。

"Mounts": [
{
"Type": "bind",
"Source": "/docker/tmp",
"Destination": "/usr/share/nginx/www",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],

在这个 docker/tmp 目录增加index.html 文件,重新访问服务发现 访问到了 index.html 文件。

 3.创建一个挂载卷容器,其他的容器使用这个卷容器进行数据共享。

docker create -v $PWD/data:/var/mydata --name data_container ubuntu

创建一个数据卷容器。

docker run -it --volumes-from data_container unbuntu /bin/bash

运行另外的容器使用 数据卷容器。

在该容器下 执行 mount 命令,可以看到 有 /var/mydata 目录挂载了,在这个目录下增加文件,可以在宿主目录看到添加的文件。

 

 

10.编写dockerfile 构建自己的web程序

下载tomcat

docker pull hub.c.163.com/library/tomcat:latest

编写dockerfile

Dockerfile

from hub.c.163.com/library/tomcat

MAINTAINER zyg 58133370@qq.com

--拷贝程序到镜像目录

copy jsaas.war /usr/local/tomcat/webapps

--创建目录

RUN mkdir /usr/local/tomcat/jms

编译Dockerfile

docker build -t jsaas:latest .

查看编译后的文件

REPOSITORY TAG IMAGE ID CREATED SIZE
jsaas latest 330e27e1d2ba 13 minutes ago 520MB

运行镜像

docker run -d -p 8080:8080 jsaas

 

posted on 2018-10-03 12:00  自由港  阅读(320)  评论(1编辑  收藏  举报