3 回答

TA貢獻1856條經驗 獲得超5個贊
1.啟動一個Docker容器
?。踨oot@localhost ~]# docker run -i -t Ubuntu /bin/bash
Unable to find image ‘ubuntu’ locally
Pulling repository ubuntu
04c5d3b7b065: Download complete
511136ea3c5a: Download complete
c7b7c6419568: Download complete
70c8faa62a44: Download complete
d735006ad9c1: Download complete
Status: Downloaded newer image for ubuntu:latest
注:
-i:打開容器中的STDIN
-t:為容器分配一個偽tty終端
從上面我們可以看出,首先Docker會檢查本地是否存在ubuntu鏡像,如果在本地沒有找到該鏡像的話,那么Docker就會去官方的Docker Hub Registry查看Docker Hub中是否有該鏡像。Docker一旦找到該鏡像,就會下載該鏡像并將其保存到本地的宿主機中。
然后,Docker在文件系統內部用這個鏡像創建了一個新的容器。該容器擁有自己的網絡、IP地址,以及一個用來可以和宿主機進行通信的橋接網絡接口。最后,我們告訴Docker在新容器中要運行什么命令。
當容器創建完畢之后,Docker就會執行容器中的/bin/bash命令。這時間我們就可以看到容器內的shell
root@8c342c0c275c:/#
注:8c342c0c275c代表容器的ID
2.使用容器
查看該容器的主機名
root@8c342c0c275c:/# hostname
8c342c0c275c
可以看到,容器的主機名就是該容器的ID
查看該主機的hosts文件
root@8c342c0c275c:/# cat /etc/hosts
172.17.0.2 8c342c0c275c
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
可以看到Docker為該容器的IP地址添加了一條主機配置項。
查看該容器的IP地址
root@8c342c0c275c:/# ip a
1: lo: 《LOOPBACK,UP,LOWER_UP》 mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
4: eth0: 《BROADCAST,UP,LOWER_UP》 mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever
查看容器中運行的進程
root@8c342c0c275c:/# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 18168 1976 ? Ss 09:38 0:00 /bin/bash
root 19 0.0 0.0 15568 1144 ? R+ 09:55 0:00 ps -aux

TA貢獻1785條經驗 獲得超8個贊
步驟1:為我們的容器創建第一個鏡像
# 以 centos 鏡像作為基礎鏡像,我們啟動自己的容器并在其中執行/bin/bash命令
# 注:-t -i 參數用于創建一個虛擬的命令行。
sudo docker run -t -i centos /bin/bash
現在我們已經成功的運行了自己的第一個容器,并且進入到容器的命令行界面中。在容器中,我們執行下面的命令:
yum -y update # 更新軟件包
yum install which # 安裝which命令
yum install git # 安裝Git
安裝完成后,按 Ctrl + d 來退出容器的命令行。
# 執行sudo docker ps -a,可以看到被我們終止的容器
CONTAINER ID IMAGE COMMAND CREATED……
da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..
把我們所做的改變提交到一個新的容器:
# 這里我們創建一個自己的基礎容器,容器中安裝好了文章中所需的常用工具。讀者的容器 id 可能與文章中的有所不同,以上一步 docker ps -a 的結果為準。
sudo docker commit da90 custom/base
容器成功提交后,執行 sudo docker images ,我們會看到剛才提交的容器(如下面的結果所示)。我們就以這個容器為基礎容器,再來創建一個新的容器。
REPOSITORY TAG IMAGE ID CREATED
custom/base latest 05b6cecd370b 2 minutes ago
centos 6.4 539c0211cd76 10 months ago
centos latest 539c0211cd76 10 months ago…
步驟2:創建新的容器,并安裝 apache
# 以 custom/base 容器為基礎,運行一個新的容器。
sudo docker run -t -i custom/base /bin/bash
# 安裝 httpd
yum install httpd
步驟3:再次提交新的容器
按 Ctrl + d 來退出容器的命令行,然后執行命令:
# 這個命令會把步驟2中我們安裝 httpd 帶來的改變提交到新的名為 custom/httpd 的容器鏡像中。你的容器 id 可能會和文章中有所不同,以 sudo docker ps -a 命令的結果為準。
sudo docker commit aa6e2fc0b94c custom/httpd
你應該已經發現了,我們創建了一個帶有 http 服務器并可以復用的容器鏡像。你可以根據這種思想,為自己所需的每個組件都創建一個容器,然后把這些容器復用于開發環境或者生產環境。
步驟7:運行 http 服務器
# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.
# -v 參數把主機共享給虛擬機的一個卷掛載到容器中
# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile
# -p 參數把虛擬機的80端口映射到容器的80端口;虛擬機的80端口在 Vagrantfile 中被綁定到主機的8080端口,也就是:主機8080->虛擬機80->容器80
sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash
# 啟動 Apache
apachectl -k start

TA貢獻1848條經驗 獲得超10個贊
1 docker pull mysql
2 docker run -v /data/var/mysql/:/var/lib/mysql -e YSQL_ROOT_PASSWORD=kS4pJUIb mysql
3 docker stop [CONTAINER ID]
4 docker run -it -v /data/var/mysql/:/var/lib/mysql mysql /bin/bash
5 mysqld_safe&
6 grant all privileges on *.* to 'wuxiao'@'%' identified by 'password';
7 docker cp [CONTAINER ID]:/etc/mysql/my.cnf /data/local/my.cnf
8 docker stop [CONTAINER ID]
9 docker run -d -p 3306:3306 -v /data/var/mysql/:/var/lib/mysql -v /data/local/my.cnf:/etc/mysql/my.cnf mysql
10 add [CMD] to /etc/rc.local
11 OK!
- 3 回答
- 0 關注
- 1113 瀏覽
添加回答
舉報