最近自己在學(xué)習(xí)Docker方面的知識(shí),一是因?yàn)楣具@邊也在用Docker,自己不會(huì),每次都去請教別人總顯的很麻煩,自己學(xué)會(huì)了總算一門技術(shù)。并且學(xué)習(xí)微服務(wù)我們總是需要用到容器技術(shù),在這個(gè)快速發(fā)展的路上,我們還是有必要去學(xué)習(xí)嘗試的。
現(xiàn)在關(guān)于基礎(chǔ)命令的學(xué)習(xí)已經(jīng)算全部完成,但是總體還是說只是了解,還不能達(dá)到熟練的目的,并且容器知識(shí)還有很多需要去融會(huì)貫通的。那么我們就開始實(shí)戰(zhàn)練習(xí),去掌握這些技術(shù)。實(shí)戰(zhàn)操作也會(huì)形成一個(gè)系列來寫,也是自己的操作過程。希望我們在實(shí)戰(zhàn)操作后都能順利的掌握住這門技術(shù)。
使用commit命令創(chuàng)建一個(gè)新的容器
我們是建立一個(gè)ubuntu的容器。
- 首先搜索下ubuntu的
docker@ubuntu:~$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 8309 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 213 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 170 [OK]
在這里我們也可以使用docker pull ubuntu 拉取新的版本ubuntu容器。在執(zhí)行我們的run,但是run在操作的時(shí)候會(huì)首先檢查下是否存在本地鏡像,不存在就直接去倉庫拉取新的鏡像,我們就直接操作鏡像即可,并且操作上加上/bin/bash 在運(yùn)行后直接進(jìn)入容器里面。
docker@ubuntu:~$ docker run -it --name myubuntu ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
124c757242f8: Pull complete
2ebc019eb4e2: Pull complete
dac0825f7ffb: Pull complete
82b0bb65d1bf: Pull complete
ef3b655c7f88: Pull complete
Digest: sha256:72f832c6184b55569be1cd9043e4a80055d55873417ea792d989441f207dd2c7
Status: Downloaded newer image for ubuntu:latest
root@61c5b26e974e:/# apt-get update
Get:1 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
Get:3 http://security.ubuntu.com/ubuntu bionic-security/universe Sources [17.4 kB]
因?yàn)槲覀冎皇怯脕韯?chuàng)建自己的ubuntu容器 可能需要操作其他的內(nèi)容,所以我在本地容器中增加了vim操作命令,然后退出容器進(jìn)行提交
root@61c5b26e974e:/# apt-get install vim
root@61c5b26e974e:/# exit
執(zhí)行提交命令將容器保存為一個(gè)新的ubuntu鏡像。
docker@ubuntu:~$ docker commit myubuntu myubuntu:latest
sha256:494bbb7b88af3e761a976facefa3a276cb3908cc4dac98abcdb3f91d0cb19e63
使用DockerFile創(chuàng)建需要的容器
- 創(chuàng)建需要的文件與腳本文件 然后通過DockerFile文件映射到容器中
docker@ubuntu:~/Desktop/sshd_ubuntu$ touch Dockerfile run.sh
docker@ubuntu:~/Desktop/sshd_ubuntu$ ll
total 8
drwxr-xr-x 2 docker docker 4096 Sep 2 05:43 ./
drwxr-xr-x 4 docker docker 4096 Sep 2 05:42 ../
-rw-r--r-- 1 docker docker 0 Sep 2 05:43 Dockerfile
-rw-r--r-- 1 docker docker 0 Sep 2 05:43 run.sh
docker@ubuntu:~/Desktop/sshd_ubuntu$ vim run.sh
- 寫DockerFile文件內(nèi)容
# 設(shè)置繼承鏡像
FROM ubuntu:14.04
# 提供一些作者的信息
MAINTAINER from frq
# 下面是開始運(yùn)行的命令
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse"> /etc/apt/sources.list
RUN apt-get update
#安裝ssh服務(wù)
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh
#取消pam限制
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#復(fù)制配置文件到響應(yīng)的位置,并執(zhí)行腳本可執(zhí)行權(quán)限
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#開放端口
EXPOSE 22
#設(shè)置自啟動(dòng)命令
CMD ["/run.sh"]
最后一步 我們將內(nèi)容打包成docker文件,最后使用命令查看下即可
docker@ubuntu:~/Desktop/sshd_ubuntu$ docker build -t sshd:dockerfile .
docker@ubuntu:~/Desktop/sshd_ubuntu$ docker images
''REPOSITORY TAG IMAGE ID CREATED SIZE
sshd dockerfile 5abaa0c085ab 37 seconds ago 251MB