Docker學習筆記-入門

建立一個新的 Docker 虛擬機

測試環境爲Macmysql

docker-machine create --driver virtualbox default

這就在 VirtualBox 中建立了一臺新的default虛擬機。
該命令還會在~/.docker/machine/machines/default目錄下生成一個 docker machine 的配置文件。只需執行一次create命令,而後可使用docker-machine命令來開啓,中止,查詢並管理虛擬機。git

列出全部可用的 docker machine

$ docker-machine ls
NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
default             *        virtualbox   Running   tcp://192.168.99.101:2376

獲取default虛擬機的環境變量

$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.101:2376"
export DOCKER_CERT_PATH="/Users/mary/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell: 
# eval "$(docker-machine env default)"

鏈接到Docker VM

docker-machine ssh default

也能夠在宿主機上經過ssh鏈接github

ssh docker@192.168.99.100
user: docker
pass: tcuser

設置Docker默認鏡像服務器

在/etc/docker/daemon.json添加如下配置,修改保存後重啓 Docker 以使配置生效sql

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

查看docker鏡像

docker@default:~$ docker images
REPOSITORY                     TAG        IMAGE ID         CREATED             SIZE
hub.c.163.com/library/tomcat   latest     72d2be374029     3 months ago        292MB

運行docker鏡像,將docker容器的8080端口映射到宿主機的8888端口上docker

docker run -i -t -p 8888:8080 72d2be374029

刪除鏡像

docker rmi ed9c93747fe1

若鏡像有運行的容器則沒法刪除shell

查看運行的docker實例

docker@default:~$ docker psjson

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
1f68cb2ef5ee        72d2be374029        "catalina.sh run"   48 seconds ago      Up 47 seconds       0.0.0.0:8888->8080/tcp   modest_goldwasser
8409934c431d        72d2be374029        "catalina.sh run"   14 minutes ago      Up 14 minutes       0.0.0.0:8088->8080/tcp   practical_shirley

登陸docker容器

docker exec -i -t 1f68cb2ef5ee /bin/bash

中止docker容器

docker stop --time=20 container_name

docker stop命令執行的時候,會先向容器中PID爲1的進程發送系統信號SIGTERM,而後等待容器中的應用程序終止執行,若是等待時間達到設定的超時時間,或者默認的10秒,會繼續發送SIGKILL的系統信號強行kill掉進程。在容器中的應用程序,能夠選擇忽略和不處理SIGTERM信號,不過一旦達到超時時間,程序就會被系統強行kill掉,由於SIGKILL信號是直接發往系統內核的,應用程序沒有機會去處理它。在使用docker stop命令的時候,惟一能控制的是超時時間.tomcat

docker kill --signal=SIGINT container_name

與docker stop命令不同的地方在於,docker kill沒有任何的超時時間設置,它會直接發送SIGKILL信號,以及用戶經過signal參數指定的其餘信號。bash

docker stop命令,更相似於Linux系統中的kill命令,兩者都是發送系統信號SIGTERM。而docker kill命令,更像是Linux系統中的kill -9或者是kill -SIGKILL命令,用來發送SIGKILL信號,強行終止進程。服務器

查看容器的信息

docker ps命令能夠查看容器的CONTAINER ID、NAME、IMAGE NAME、端口開啓及綁定、容器啓動後執行的COMMNAD。常常經過ps來找到CONTAINER_ID。
docker ps 默認顯示當前正在運行中的container
docker ps -a查看包括已經中止的全部容器
docker ps -l 顯示最新啓動的一個容器(包括已中止的)

查看docker容器的IP地址

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' 1f68cb2ef5ee

查看日誌

docker logs 1f68cb2ef5ee

跟蹤日誌,相似 tail -f xxx.log 能夠經過ctrl+c退出查看日誌

docker logs -f 1f68cb2ef5ee

Docker統計信息

docker@default:~$ docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
1f68cb2ef5ee        modest_goldwasser   0.13%               71.8MiB / 995.7MiB   7.21%               828B / 0B           1.2MB / 0B          41
8409934c431d        practical_shirley   0.13%               69MiB / 995.7MiB     6.93%               648B / 0B           69.6kB / 0B         43

深刻容器

docker inspect 1f68cb2ef5ee

刪除容器

docker rm e6dd317561da

能夠經過參數 -f 強制刪除運行中的容器。

刪除全部容器

docker rm 'sudo docker ps -a -q'

docker ps命令會列出全部運行的容器,-a表示列出全部容器,-q表示只須要返回容器的ID

Docker安裝Mysql

## 建立mysql本地存儲目錄
mkdir -p ~/mysql/data
docker run -p 3306:3306 --name mysql -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  -d hub.c.163.com/library/mysql:5.6

-p 3306:3306 是將docker 的3306端口映射到本機3306 端口
-v ~/mysql/data:/var/lib/mysql 是將docker的/var/lib/mysql 文件夾映射到本機的/mysql/data
-e MYSQL_ROOT_PASSWORD=123456 輸入密碼,mysql原始密碼爲123456

經過Dockerfile安裝Mysql

Mysql官方提供了安裝Mysql的Dockerfile,地址https://github.com/mysql/mysql-docker,這裏選擇8.0版本,一共三個文件

在default虛擬機上的docker用戶目錄下新建一個文件夾mysql,而後將這三個文件放在mysql文件夾下。進入mysql文件夾,執行如下命令便可構建一個新的鏡像。

sudo docker build -t="test/mysql" .

build成功後使用docker images命令便可插件鏡像

docker@default:~/mysql8$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
test/mysql                     latest              5320750e685d        2 hours ago         295MB

構建鏡像後便可經過docker run命令來啓動,須要在啓動參數中設置mysql的密碼。

docker run -e MYSQL_ROOT_PASSWORD=123456 5320750e685d
相關文章
相關標籤/搜索