安装一个nginx服务器镜像
首先去https://c.163.com/hub\#/m/search/?keyword=nginx找到下载地址
再进行拉取:
root@jimo:/home/workspace/docker# docker pull hub.c.163.com/library/nginx:latest
latest: Pulling from library/nginx
5de4b4d551f8: Pull complete
d4b36a5e9443: Pull complete
0af1f0713557: Pull complete
Digest: sha256:f84932f738583e0169f94af9b2d5201be2dbacc1578de73b09a6dfaaa07801d6
Status: Downloaded newer image for hub.c.163.com/library/nginx:latest
root@jimo:/home/workspace/docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.c.163.com/library/nginx latest 46102226f2fd 2 weeks ago 109MB
hello-world latest 48b5124b2768 3 months ago 1.84kB
root@jimo:/home/workspace/docker#
后台运行此镜像
docker ps查看进程
root@jimo:/home/workspace/docker# docker run -d hub.c.163.com/library/nginx
79e39a24d9b0cf6ded8b799ca08bc92f9bc76f4b5297465970aeb4c4d606ea31
root@jimo:/home/workspace/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79e39a24d9b0 hub.c.163.com/library/nginx "nginx -g 'daemon ..." 5 seconds ago Up 5 seconds 80/tcp confident_payne
root@jimo:/home/workspace/docker#
进入容器查看
看看exec用法:
# docker exec --help
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Run a command in a running container
Options:
-d, --detach Detached mode: run command in the background
--detach-keys string Override the key sequence for detaching a container
-e, --env list Set environment variables
--help Print usage
-i, --interactive Keep STDIN open even if not attached
--privileged Give extended privileges to the command
-t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
再查看:79是nginx的ID(79e39a24d9b0cf6ded8b799ca08bc92f9bc76f4b5297465970aeb4c4d606ea31)的前缀,这里可以唯一标识
/home/workspace/docker# docker exec -it 79 bash
root@79e39a24d9b0:/# ls
bin dev home lib32 libx32 mnt proc run srv tmp var
boot etc lib lib64 media opt root sbin sys usr
root@79e39a24d9b0:/# which nginx
/usr/sbin/nginx
root@79e39a24d9b0:/# ps -ef
bash: ps: command not found
root@79e39a24d9b0:/#
在容器内是一个linux系统,有基本的linux命令
端口映射
docker和主机的端口映射有3种:bridge(有自己的ip)、host(和主机使用同一块网卡)、none
现在我们停掉nginx:
root@jimo:/home/workspace/docker# docker stop 79
79
root@jimo:/home/workspace/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
进行端口80的映射到主机的8080
root@jimo:/home/workspace/docker# docker run -d -p 8080:80 hub.c.163.com/library/nginx
f6364c86e4e83427cfdeff89bc67106387f7f14a6cd2ca0c0dfd3323c75b8679
root@jimo:/home/workspace/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
f6364c86e4e8 hub.c.163.com/library/nginx "nginx -g 'daemon ..." 9 seconds ago Up 8 seconds
0.0.0.0:8080->80/tcp xenodochial_pasteur
可看到映射:0.0.0.0:8080->80/tcp
这时候在本机访问:http://localhost:8080/可看到nginx的欢迎界面
全部端口映射
使用-P选项:
root@jimo:/home/workspace/docker# docker run -d -P hub.c.163.com/library/nginx
e4f1886f8fd0ab0c57c119a51559dc5453990f7e9df1820312484ff6e5660b64
root@jimo:/home/workspace/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4f1886f8fd0 hub.c.163.com/library/nginx "nginx -g 'daemon ..." 3 seconds ago Up 2 seconds 0.0.0.0:32768->80/tcp festive_easley
可看到映射到了32768:0.0.0.0:32768->80/tcp
# netstat -na|grep 32768
tcp6 0 0 :::32768 :::* LISTEN
tcp6 0 0 ::1:49208 ::1:32768 ESTABLISHED
tcp6 0 0 ::1:32768 ::1:49208 ESTABLISHED
tcp6 0 0 ::1:49206 ::1:32768 ESTABLISHED
tcp6 0 0 ::1:32768 ::1:49206 ESTABLISHED